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

 

9184번: 신나는 함수 실행

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

www.acmicpc.net

 


 

문제에 답이 나와있어서 그렇게 푸는게 아닌가??? 하고 고민했다. 그래서 그냥 수도코드 대로 푸니까 오답이 나왔다.

아 그래서 이렇게 푸는게 아닌구나 하고 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

+ Recent posts