4월 7일에 풀었는데 오류인지 뭔지.. 업로드 되었는데 목록에 표시가 안되어 재업로드 한다.
import sys
input=sys.stdin.readline
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:#20보다 크면 통일
return w(20, 20, 20)
if dp[a][b][c]:#dp값이 존재하면 리턴
return dp[a][b][c]
if a < b and 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]
dp=[[[0 for _ in range(21)] for i in range(21)] for i in range(21)]
#0으로 초기화 된 3차원 배열 선언(20보다 크면 w(20,20,20)으로 통일,0~20)
while True:
a,b,c=map(int,input().split())
if a==-1 and b==-1 and c==-1:
break
print('w({}, {}, {}) = {}'.format(a,b,c,w(a,b,c)))
접근 방법
def w(a,b,c):
if a <= 0 or b <= 0 or c <= 0
returns 1
if a > 20 or b > 20 or c > 20:
return w(20, 20, 20):
if a < b and b < c:
return w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c):
else:
return w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)