728x90
거스름돈 성공
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 | 512 MB | 10780 | 4926 | 4201 | 48.072% |
문제
춘향이는 편의점 카운터에서 일한다.
손님이 2원짜리와 5원짜리로만 거스름돈을 달라고 한다. 2원짜리 동전과 5원짜리 동전은 무한정 많이 가지고 있다. 동전의 개수가 최소가 되도록 거슬러 주어야 한다. 거스름돈이 n인 경우, 최소 동전의 개수가 몇 개인지 알려주는 프로그램을 작성하시오.
예를 들어, 거스름돈이 15원이면 5원짜리 3개를, 거스름돈이 14원이면 5원짜리 2개와 2원짜리 2개로 총 4개를, 거스름돈이 13원이면 5원짜리 1개와 2원짜리 4개로 총 5개를 주어야 동전의 개수가 최소가 된다.
입력
첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다.
출력
거스름돈 동전의 최소 개수를 출력한다. 만약 거슬러 줄 수 없으면 -1을 출력한다.
문제풀이
import sys
num=int(sys.stdin.readline())
cnt=0
while(num>0):
if num%5==0:
cnt=cnt+num//5
break
else:
cnt+=1
num-=2
if num<0:
cnt=-1
print(cnt)
동전개수의 최소갯수를 구하는문제이다(그리디)
5원짜리와 2원짜리로 해당하는 거스름돈의 최소값을 구해야한다
일단 5로 나누어떨어지면 해당하는만큼 최소값에 +해준다.
아니면
2씩 빼면서 5와 떨어지는값이 잇는지 확인하면서 최소값을1 씩 늘려주었다.
만약 나누어 떨어지지않는다면 num 값은 0이 아닌 음수가 되므로 음수일 시 -1을 출력해주었다.
728x90
'코딩테스트 문제풀이' 카테고리의 다른 글
1157번 단어공부 백준 (0) | 2022.10.21 |
---|---|
2167번 2차원배열의합 (0) | 2022.10.20 |
17413 단어뒤집기 2 백준온라인 (0) | 2022.10.17 |
백준 16953번 A->B (1) | 2022.10.13 |
백준 17298 번 오큰수 (0) | 2022.10.12 |