[04.10/week05]TIL

CHO WanGi·2025년 4월 10일

KRAFTON JUNGLE 8th

목록 보기
26/89

오늘 하루 요약

새롭게 배우게 된 것

  • DP(14916)
  • C언어 기초

DP(14916)

https://www.acmicpc.net/problem/14916

집념과 불굴의 의지로 맞추었다...ㅎㅎ

# 구할 것 : 거스름돈 N을 최소한의 동전 개수 (2원, 5원)
# N : 거스름돈 액수
# Greedy
# 5원을 쓸 수 있을 만큼 최대한 써야 최소 개수
# N이 5의 배수면 그거 나눈 몫이 답
# 2원을 쓰다가 5의 배수를 만날수..?

N = int(input())

def counter(N):
  count = 0
  while N >= 0:
    if N % 5 == 0:
      count += N // 5
      return count
    N -= 2
    count += 1

  return -1

print(counter(N))

그리디로 풀었고, 5원을 최대한 써야한다는 것을 파악을 했다.

그래서 5를 계속 빼다가 2의 배수를 만나면 2로 나눈 몫을 더해주었는데

이때 반례 21이 등장.
21 -> 16 -> 11 -> 6... 순으로 가야하는데
저렇게 되면 21 -> 16 에서 16이 2의 배수이기 때문에 8을 더해 9개의 동전을 쓰게 되었다.

굿노트에서 스케치(?)를 하면서 풀고 있었는데
문득 15 6 을 6 15로 뒤집었더니 깨달음을 얻었다.
2원을 쓰다가 5의 배수가 되었을때 5로 나눈 몫을 더한다는 생각을 하게 되었고 이를 코드로 구현하니 바로 맞았다.

C언어 기초

기본적인 개요와 문자를 입력받고 조건문과 기초 반복문을 학습했다.

  • 축빠 조건문 실습
# include <stdio.h>
int main(){
  int rank;
  printf("최종 성적 순위 : ");
  scanf("%d", &rank); // &rank 라는 주소를 담은 변수에 정수 저장

  if (rank == 1 || rank == 2) {
        printf("AFC 챔피언스 리그 진출\n");
    } else if (rank == 3) {
        printf("AFC 챔피언스 리그 2 진출\n");
    } else if (rank >= 4 && rank <= 9) {
        printf("1부 리그 잔류\n");
    } else if (rank == 10 || rank == 11) {
        printf("강등 플레이오프 진출\n");
    } else if (rank == 12) {
        printf("2부 리그 자동 강등\n");
    } else {
        printf("잘못된 순위입니다. 1~12등 사이로 입력해주세요.\n");
    }
  return 0;
}
  • 끝에 return 0 쓰는 이유
    0을 반환한다는 뜻인데 현재 실행중인 함수를 끝내기 위함으로 사용한다.
    이렇게 하면 운영체제가 실행중인 함수가 끝났다고 판단하게 된다.

Docker를 통한 동일 환경 구현

  • Docker란?
    내 컴퓨터 안에 작은 리눅스 컴퓨터를 하나 띄워서, 그 안에서 C 코드를 실행하는 도구

  • 컨테이너란?
    애플리케이션 실행을 위한 격리된 공간

내부에 운영체제, 패키지, 코드 모두 포함

누가, 어디서 실행하든 항상 똑같이 작동

  • 왜 Docker를 쓰는 게 좋을까?

✔️ 1. 동일한 환경 보장
모든 팀원이 같은 Ubuntu 버전, gcc, gdb, valgrind 환경에서 개발 가능

→ “내 컴에서는 되는데?” 문제 최소화

✔️ 2. 실습 + 협업 생산성 증가
Git과 연동하면 각자의 코드도 손쉽게 공유 가능

실습 환경과 협업 환경을 한 번에 통일

✔️ 3. 라이브러리/버전 충돌 방지
로컬에 설치된 gcc, valgrind 등의 버전 차이로 인한 충돌 방지

Dockerfile로 설치 버전 고정 가능

✔️ 4. 가볍고 빠른 환경 구성
VM처럼 무겁지 않음

docker build와 docker run만으로 수초 내에 개발환경 구성 가능

공부하다가 아쉬운 점

가상환경 도커에 구현하는거 부터가 어려웠지만 그래도 해냈다.
이제 새로운 C라는 바다로 뛰어드니까 새마음 새뜻으로 열씨미 해보자.

profile
제 Velog에 오신 모든 분들이 작더라도 인사이트를 얻어가셨으면 좋겠습니다 :)

0개의 댓글