336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
첫번째 작성했던 것은 """메모리초과""" 를 받았다.
일단
위 방정식을 생각했는데
f(n,k) : k 값을 n개의 동전으로 만들기 위한 가짓수.
f(n, k-coin[n]) ; n개의 동전중 coin[n]을 한번 사용해서 k-coin[n] 일 때 n개 동전을 사용하는 것을 구함.
f(n-1, k) ; n-1개 동전으로 k를 구함.
입력으로 주어진 coin n개 중 coin[n]을 사용해서 값을 구하는 것을 재귀함수로 호출하여 풀이하려고 했다.
근데 메모리초과? 길래 4MB 가 제한 기준인 걸 보고서... 다시 생각을 해야했었음..
다른 생각으로
동전이 예제와 같이
3 10
1
2
5
want = 10
coin[] = {1,2,5}
첫번째 coin[0] 을 가지고 10을 만들 수 있는 경우를 먼저 갱신하고
coin[1]을 가지고 10을 만들 수 있는 경우를 갱신
....
coin[n-1] 개 를 가지고 만들 수 있는 경우를 갱신하며 memo[want]에 적힌 값을 출력하면 되는 문제였다.
그렇게 되면 재귀적으로 하지 않고 배열또한 100 * 10000 = 1,000,000 크기를 사용하지 않아도 10000개 까지만 사용해도 되었었다.
'PSNote > Problem Solving' 카테고리의 다른 글
[BOJ-2178]미로찾기 (0) | 2017.07.17 |
---|---|
[BOJ-2580]스도쿠 (0) | 2017.07.17 |
[BOJ-4880]다음수 (0) | 2017.07.17 |
[BOJ-1946]신입사원 (0) | 2017.07.17 |
[BOJ=10844]쉬운계단수 (0) | 2017.07.17 |