336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

첫번째 작성했던 것은 """메모리초과""" 를 받았다. 

일단 

f(n%2Ck)%3Df(n%2Ck-c%5Bn%5D)%2Bf(n-1%2Ck)%20 


위 방정식을 생각했는데

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

+ Recent posts