https://www.acmicpc.net/problem/9184
문제에 답이 나와있어서 그렇게 푸는게 아닌가??? 하고 고민했다. 그래서 그냥 수도코드 대로 푸니까 오답이 나왔다.
아 그래서 이렇게 푸는게 아닌구나 하고 2시간 동안 고민하다가 출력형식이 잘못됐다는걸 알았다.
항상 출력형식을 잘 보자.
import sys
input = sys.stdin.readline
dp = [[[0]*(21) for _ in range(21)] for _ 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]
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
print(f'w({a}, {b}, {c}) = {w(a,b,c,)}')
'취준 > 백준' 카테고리의 다른 글
3036 - 파이썬 (0) | 2022.05.06 |
---|---|
2981 - 파이썬 (0) | 2022.05.05 |
1003 - 파이썬 (0) | 2022.05.03 |
14889 - 파이썬 (0) | 2022.05.02 |
14888 - 파이썬 (0) | 2022.05.01 |