[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: 수고하셨습니다. :+1:

Leave a comment