DHistory
[Baekjoon] DP - 9184 신나는 함수 실행 본문
문제
https://www.acmicpc.net/problem/9184
풀이
재귀함수 호출 결과를 미리 저장한다. (팩토리얼 문제와 유사)
함수를 호출하는 부분을 미리 저장한 내용을 불러오면 된다.
코드
import sys
number = [[[0 for _ in range(21)] for _ in range(21)] for _ in range(21)]
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 number[20][20][20]
if a < b and b < c:
return number[a][b][c - 1] + number[a][b - 1][c - 1] - number[a][b - 1][c]
return number[a - 1][b][c] + number[a - 1][b - 1][c] + number[a - 1][b][c - 1] - number[a - 1][b - 1][c - 1]
for i in range(21):
for j in range(21):
for k in range(21):
number[i][j][k] = w(i, j, k)
while True:
a, b, c = map(int, sys.stdin.readline().strip().split())
if a == -1 and b == -1 and c == -1:
break
print(f'w({a}, {b}, {c}) = {w(a, b, c)}')
'Computer Science > Algorithm' 카테고리의 다른 글
[Baekjoon] 정렬 - 2075 N번째 큰 수 (0) | 2024.08.21 |
---|---|
[Baekjoon] DP - 11048 이동하기 (0) | 2024.08.20 |
[Baekjoon] Graph - 16953 A → B (0) | 2024.08.20 |
[Baekjoon] Sort - 11870 좌표 압축 (0) | 2024.08.20 |
[Baekjoon] DP - 1082 방 번호 (오답노트) (0) | 2023.11.03 |