-
[9184] 신나는 함수 실행 (Python)[Python] 알고리즘/Silver 2022. 4. 12. 14:30
[문제]
https://www.acmicpc.net/problem/9184
알고리즘 분류는 다이나믹 프로그래밍, 재귀 입니다.
이전에 계산한 값을 저장하여 시간을 줄입니다.
[코드]
import sys li = [[[0 for _ in range(51)] for _ in range(51)] for _ in range(51)] def w(a, b, c): if a <= 0 or b <= 0 or c <= 0: return 1 elif a > 20 or b > 20 or c > 20: if li[20][20][20] == 0: li[20][20][20] = w(20, 20, 20) return li[20][20][20] elif a < b and b < c: if li[a][b][c] == 0: li[a][b][c] = w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c) return li[a][b][c] else: if li[a][b][c] == 0: li[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 li[a][b][c] while True: a, b, c = map(int, sys.stdin.readline().split()) if a == -1 and b == -1 and c == -1: break print("w(%d, %d, %d) = %d" % (a, b, c, w(a, b, c)))
'[Python] 알고리즘 > Silver' 카테고리의 다른 글
[11053] 가장 긴 증가하는 부분 수열 (Python) (0) 2022.05.06 [1912] 연속합 (Python) (0) 2022.04.30 [10819] 차이를 최대로 (Python) (0) 2022.04.12 [1182] 부분수열의 합 (Python) (0) 2022.04.04 [6603] 로또 (Python) (0) 2022.04.04