백준(9184) - 신나는 함수 실행

지환·2023년 9월 22일
0

백준(python)

목록 보기
42/67
post-thumbnail

출처 | https://www.acmicpc.net/problem/9184

코드

import sys

input = sys.stdin.readline

dp = [[[0] * 21 for i in range(21)] for j 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 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]
    
    else:
        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 1:
    a,b,c = map(int, input().split())
    if a==-1 and b == -1 and c == -1:
        break

    ans = w(a,b,c)
    print('w(%d, %d, %d) = %d' %(a,b,c, ans))

  • 아직 동적프로그래밍 잘 모르겠다.. 우선 의사코드 보고 풀기는 했는데 더 공부를 해야 겠다.
profile
아는만큼보인다.

0개의 댓글