개발하지연
[백준 14916번] 거스름돈 (python) 본문
문제
춘향이는 편의점 카운터에서 일한다.
손님이 2원짜리와 5원짜리로만 거스름돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오.
예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다.
기록
(greedy 1일차) 트리 끝내고 그리디 알고리즘 시작했다. 아직 어떤 알고리즘인지 감은 잘 안오지만 그 상황에서 최적의 선택을 하는 알고리즘? 이라는 것만 알고 무작정 문제 풀어보려고한다. 내맘대로 구현한 코드가 될 것 같아서 코드 안올릴까하다가 그냥 기록의 의미로....... 올리려고 한다. 문제 난이도는 엄청 쉬웠다!
코드
n = int(input())
num5 = n//5
num2 = (n%5)//2
if (n%5)%2==1:
num2+=3
num5-=1
if num5==-1 : print(-1)
else : print(num2+num5)
1. 일단 5원을 최대로 계산하고, 나머지를 2원으로 모두 채워넣는다.
2. 다 계산했는데 1원이 남는다면 5원을 1개 줄이고 2원을 3개 늘린다.
3. 5원 개수가 -1인지에 따라서 출력
'알고리즘' 카테고리의 다른 글
[백준 1343번] 폴리오미노 (python) (0) | 2021.07.10 |
---|---|
[백준 2217번] 로프 (python) (0) | 2021.07.10 |
[백준 20924번] 트리의 기둥과 가지 (python) (0) | 2021.07.09 |
[백준 2263번] 트리의 순회 (python) (0) | 2021.07.09 |
[백준 2250번] 트리의 높이와 너비 (python) (0) | 2021.07.09 |
Comments