-
[이코테 # Greedy1] 거스름돈 문제 풀이Programming 기초/Coding Test 2023. 6. 2. 17:13
* Greedy Algorism
" 현재 상황에서 지금 당장 좋은 것만 고르는 방법"
* 거스름돈 문제
카운터에 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리의 동전이 무한히 존재한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수.(단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다.)
# 해설 보기 전 original 본인 답변 # 500원= Five_H, 100원= One_H, 50원 = Fifty , 10원 = Ten # 손님에게 거슬러줘야 할 돈 N = change # 상품 가격 : ProductPrice = 1350원 ProductPrice = 740 print("상품 가격 : %d" % ProductPrice) payment = int(input("받은 돈: ")) # 2000원을 받는다. change = payment - ProductPrice Five_H = change // 500 One_H = (change - 500 * Five_H) // 100 Fifty = (change - 500 * Five_H - 100 * One_H) // 50 Ten = (change - 500 * Five_H - 100 * One_H - 50 * Fifty) // 10 total_coin = Five_H + One_H + Fifty + Ten # 거스름돈 계산 if change < 0: print("현금이 부족합니다.") else: print("거스름돈은 %d 원입니다." % change) print("500원 : %d, 100원 : %d, 50원 : %d, 10원 : %d" % (Five_H, One_H, Fifty, Ten)) print("거슬러줘야 할 동전의 최소 개수는 %d개 입니다." % total_coin)
* 거스름돈 문제 해설 답
현 거스름돈 문제에서는 큰 단위가 항상 작은 단위의 배수 형태이므로 최적의 해를 보장할 수 있다.
N = 1260 count = 0 coin_type = [500, 100, 50, 10] for i in coin_type: count += N // i N = N % i print(count)
'Programming 기초 > Coding Test' 카테고리의 다른 글
[이코테 # 구현2] 왕실의 나이트 (0) 2023.06.06 [이코테 # 구현1] 시뮬레이션 문제: 상하좌우, 완전 탐색 문제 : 시각 (1) 2023.06.06 [이코테 # Greedy3] 숫자 카드 게임 (0) 2023.06.05 [CodeUp#review] 기초 100제 (0) 2023.06.04 [이코테 # Greedy2] 큰 수의 법칙, sort함수, 함수 매개변수의 콜론(:)과 화살표(->)의 의미 (0) 2023.06.04