코드업 3301 문제 풀이 python

🐒 거스름돈

어떤 가게의 욕심쟁이 점원은 거스름돈을 나눠줄때 거스름돈의 개수를 적게해서 주고자 한다.

거스름돈을 입력 받아 점원이 줄 수 있는 최소 거스름돈의 개수를 출력하시오.

예를 들어 54520원인 경우,

거스름돈으로 50000원권 1장, 1000원권 4장, 500원 1개, 10원 2개 해서 총 8개이다.

(※ 현재 우리나라가 사용하고 있는 화폐를 사용한다. 10원 50원 100원 500원 1,000원 5,000원 10,000원 50,000원)

거스름돈 n이 입력된다. ( n은10이상의 int 범위 )
최소 거스름돈의 개수를 출력한다.

입력 예시

54520

출력 예시

8

나의 풀이

a = int(input())
count = 0

for i in [50000, 10000, 5000, 1000, 500, 100, 50, 10]:
    if a // i != 0 :
        count += a // i
        a = a % i

print(count)

워낙 유명한 문제이기도 하고 비슷한 문제를 이전에 풀어봤어서 쉽게 풀 수 있었다. (7분 걸렸다😽)

아이디어 : 가장 큰 단위의 거스름돈부터 거슬러 주면 거스름돈 갯수를 최소로 줄 수 있다.

a = int(input()) # 변수 a에 거슬러 줘야 할 돈을 입력받아 저장한다.
count = 0		 # 거스름돈 갯수를 저장할 count 변수를 초기화 한다. 

 				 # 거스름돈 단위를 큰 수 부터 i에 불러온다
for i in [50000, 10000, 5000, 1000, 500, 100, 50, 10]:
    if a // i != 0 : 	# 거슬러줄 돈이 i로 나뉘면 i로 거슬러 줄 수 있다.
        count += a // i # 거스름돈 갯수에 i로 거슬러 준 갯수를 기존 count변수에 더해준다.
        a = a % i		# i로 거슬러 주고난 나머지를 변수 a에 저장한다. 

print(count)			# 거스름돈 갯수를 출력한다.

좋은 웹페이지 즐겨찾기