PS/BOJ

[Python] 14916번 거스름돈

s_omi 2024. 7. 16. 09:42
728x90
반응형
SMALL

✏️ 문제

 

문제 파악

이거 설탕 배달이랑 똑같은 알고리즘이다. 보자마자 설탕 배달 생각남..

최소 개수를 출력해야 되므로 큰 단위인 5원부터 비교하지만 5원보다 크다고 무조건 5원으로 나누도록 코드를 짜지 않는 게 포인트이다. 

 

예제1의 경우 5원으로 나누게 되면 5원 2개가 나오고 나머지가 3이므로 거슬러 줄 수 없다고 나올 수 있기 때문이다. 이 점을 잘 생각하여 코드를 작성해야 한다.

 

알고리즘

  • 그리디 알고리즘
  • 다이나믹 프로그래밍
  • 수학

 

 

코드

n = int(input())
count = 0

while n >= 0:
  if n % 5 == 0: 
  	# 5원으로 나눴을 때 나머지가 없는 경우에만 5원으로 나눔!
    count += int(n // 5)
    print(count)
    break

  n -= 2 
  count += 1
else: # 루프가 정상적(또는 조건이 거짓이 되어서)으로 종료되었을 때 실행 
	  # while 루프가 중간에 break 문에 의해 종료되지 않았을 때 실행되는 코드
  print(-1)

 

 

728x90
반응형
LIST

'PS > BOJ' 카테고리의 다른 글

[Python] 2847번 게임을 만든 동준이  (0) 2024.07.16
[Python] 1213번 팰린드롬 만들기  (0) 2024.07.16
[Python] 1049번 기타줄  (0) 2024.07.15
[Python] 1946번 신입 사원  (0) 2024.07.15
[Python] 10610번 30  (0) 2024.07.15