본문 바로가기

알고리즘/python

[python/파이썬] 백준 9184 신나는 함수 실행

반응형

[문제 출처]

https://www.acmicpc.net/problem/9184

 

9184번: 신나는 함수 실행

입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.

www.acmicpc.net

 

 

[소스 코드]

dp = [[[0 for col in range(21)] for row in range(21)] for depth 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-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]

  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 True:
  a,b,c = map(int,input().split())
  if a == -1 and b == -1 and c == -1:
    break
  result = w(a,b,c)
  print("w(%d, %d, %d) = %d" %(a,b,c,result))

 

반응형