


집념과 불굴의 의지로 맞추었다...ㅎㅎ
# 구할 것 : 거스름돈 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로 나눈 몫을 더한다는 생각을 하게 되었고 이를 코드로 구현하니 바로 맞았다.
기본적인 개요와 문자를 입력받고 조건문과 기초 반복문을 학습했다.
# 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;
}
Docker란?
내 컴퓨터 안에 작은 리눅스 컴퓨터를 하나 띄워서, 그 안에서 C 코드를 실행하는 도구
컨테이너란?
애플리케이션 실행을 위한 격리된 공간
내부에 운영체제, 패키지, 코드 모두 포함
누가, 어디서 실행하든 항상 똑같이 작동
✔️ 1. 동일한 환경 보장
모든 팀원이 같은 Ubuntu 버전, gcc, gdb, valgrind 환경에서 개발 가능
→ “내 컴에서는 되는데?” 문제 최소화
✔️ 2. 실습 + 협업 생산성 증가
Git과 연동하면 각자의 코드도 손쉽게 공유 가능
실습 환경과 협업 환경을 한 번에 통일
✔️ 3. 라이브러리/버전 충돌 방지
로컬에 설치된 gcc, valgrind 등의 버전 차이로 인한 충돌 방지
Dockerfile로 설치 버전 고정 가능
✔️ 4. 가볍고 빠른 환경 구성
VM처럼 무겁지 않음
docker build와 docker run만으로 수초 내에 개발환경 구성 가능
가상환경 도커에 구현하는거 부터가 어려웠지만 그래도 해냈다.
이제 새로운 C라는 바다로 뛰어드니까 새마음 새뜻으로 열씨미 해보자.