[BOJ][Python][실3][1003] 신나는 함수 실행
문제 링크
첫 번째 풀이
정답코드
dp[i][j][k] : 구해야하는 수 = 문제에서 주어진 정의에 따라 구현
0이하는 0으로, 20이 이상은 20으로 생각해서 배열의 범위를 21로 설정합니다.
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
29
30
31
import sys
from math import pi, sqrt
from collections import deque, Counter
from operator import itemgetter
# sys.stdin = open('input.txt', 'r')
while True:
a, b, c = map(int, sys.stdin.readline().split(' ', maxsplit=2))
if a == -1 and b == -1 and c == -1:
break
print(f'w({a}, {b}, {c}) = ', end='')
if a <= 0 or b <= 0 or c <= 0:
a, b, c = 0, 0, 0
if a > 20 or b > 20 or c > 20:
a, b, c = 20, 20, 20
n = 21
dp = [[[1] * n for _ in range(n)] for _ in range(n)]
for i in range(1, n):
for j in range(1, n):
for k in range(1, n):
if i < j < k:
dp[i][j][k] = dp[i][j][k - 1] + \
dp[i][j - 1][k - 1] - \
dp[i][j - 1][k]
else:
dp[i][j][k] = dp[i - 1][j][k] + \
dp[i - 1][j - 1][k] + \
dp[i - 1][j][k - 1] - \
dp[i - 1][j - 1][k - 1]
print(dp[a][b][c])
Success Notice: 수고하셨습니다.
Leave a comment