반응형
문제에 점화식까지 쓰여있어서 당황스러웠다..
너무나도 당연하게 문제에 쓰여져있는대로 코드를 작성하면 안된다!
재귀함수를 사용해야할 때 이것을 메모이제이션 하는 방법을 묻는 문제이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | MAX = 21 dp = [[[0]*MAX for _ in range(MAX)] for __ in range(MAX)] def w(a, b, c) : if a<=0 or b<=0 or c<=0 : return 1 if a>20 or b>20 or c>20 : return w(20, 20, 20) # 값이 이미 존재한다면 그 값을 바로 리턴. if dp[a][b][c]: return dp[a][b][c] if a<b<c : dp[a][b][c] = w(a,b,c-1) + w(a,b-1,c-1) - w(a,b-1,c) return dp[a][b][c] dp[a][b][c] = w(a-1,b,c) + w(a-1,b-1,c) + w(a-1,b,c-1) - w(a-1,b-1,c-1) return dp[a][b][c] while True : a, b, c = map(int, input().split()) if a== -1 and b==-1 and c==-1 : break print("w(%d, %d, %d) = %d"%(a, b, c, w(a, b, c))) | cs |
문제링크 : https://www.acmicpc.net/problem/9184
메모이제이션 : https://namu.wiki/w/%EB%A9%94%EB%AA%A8%EC%9D%B4%EC%A0%9C%EC%9D%B4%EC%85%98
반응형
'0 > algorithm' 카테고리의 다른 글
백준 2042번 구간 합 (Python) (1) | 2018.11.02 |
---|---|
백준 1620번 나는야 포켓몬 마스터 이다솜 (Python) (0) | 2018.11.01 |
백준 1992번 쿼드트리 (Python) (1) | 2018.10.29 |
하노이의 탑 (Python) (0) | 2018.10.29 |
합병 정렬 (Merge sort) (0) | 2018.10.28 |