백준 13699번 바로가기

나의 풀이

t = [1,1,2,5] + [0] * 36

if (n:=int(input())) > 3:
  for i in range(4,n+1):
    for j in range(i):
      t[i] += t[j]*t[i-j-1]

print(t[n])

고수의 풀이

import math
n=int(input())
print(math.comb(2*n,n)//(n+1))

출처

CODE REVIEW

  1. 이중 for문을 범위에 알맞게 구현하면 원하는 답을 얻을 수 있었다. 예전에 창의력 수학 문제를 푸는 기분이 든다.
  2. 고수의 풀이에서는 Combination 조합을 이용해서 문제를 풀어내었다.
    • ${2n \choose n}$ 을 (n+1)로 나눈 몫이 답과 동일한 모양…
  3. 근데 문제 제목부터 점화식이라 규칙을 찾아 푸는 방식이 출제의 의도와 적합할 듯 하다…!