바위타는 두루미
8.11 코인 본문
728x90
문제
쿼터(25센트 ) , 다임(10센트) , 니켈 (5센트 ) , 페니(1센트)의 4가지 동전이 무한히 주어졌을때
n센트를 표현하는 모든 방법의 수를 계산하는 코드를 작성하라.
해결법
이 문제도 재귀로 풀 수 있으므로 부분 문제를 만드어보자
n = 100일때
쿼터가 0개 1개 2개 3개 4개 있을 수 있다. (4개면 100을 만들 수 있을니까!)
그런데 1개의 쿼터로 100을 만드는 것은 0개의 쿼터로 75를 만드는 것과 같음을 알 수 있다.
이 논리를 2개의 쿼터, 3개의 쿼터에도 적용한다면 다음의 결과를 얻을 수 있다.
makeChange(100) = makeChange(0개의 쿼터로 100만들기 + makeChange(0개의 쿼터로 75만들기)
+ makeChange(0개의 쿼터로 50만들기 + makeChange(0개의 쿼터로 25만들기) + 1
그 다음에는 다임, 니켈, 페니에 대해서도 같은 일을 확장해서 하면 될 것이다.
def Solution(amount, denoms):
return getWays(amount, denoms,0)
def getWays(amount, denoms, index):
if index >= len(denoms)-1 :
return 1
way = 0
remain = amount -denoms[index]
while remain >=0:
way += getWays(remain, denoms, index+1)
remain -= denoms[index]
return way
'Study > Interview준비' 카테고리의 다른 글
8.13 박스 쌓기 (0) | 2019.08.05 |
---|---|
8.12 여덟개의 퀸 (0) | 2019.08.05 |
8.10 영역 칠하기 (0) | 2019.08.05 |
8.9 괄호 (0) | 2019.08.05 |
8.8 중복있는 순열 (0) | 2019.08.05 |
Comments