백준 15489번 바로가기

나의 풀이

import math

r,c,w=map(int,input().split())
sum = 0
for i in range(w):
  for j in range(i+1):
    sum += math.comb((r-1+i), j+c-1)

print(sum)

고수의 풀이

import math
R,C,W=map(int,input().split())
print(sum(math.comb(R+i-1,C+j-1)for i in range(W)for j in range(i+1)))

출처

CODE REVIEW

  1. 파스칼의 삼각형의 부분합을 구하는 문제. 범위 지정하는게 은근히 까다로운 문제였다.
  2. 고수의 풀이를 보면 파스칼의 각 위치를 일반항 math.comb(R+i-1,C+j-1)으로 구해 범위에 따라 바로 답을 구할 수 있게 했는데, 솔직히 내 풀이랑 거의 유사하다.