N,K=map(int,input().split())defdp(n,r):# (n + 1) * (r + 1)인 캐시 생성
cache=[[0for_inrange(r+1)]for_inrange(n+1)]# 캐시 초기화
# (r == 0 or n == r) -> 캐시가 1이 됨
# 조합 문제 풀 때 5C0이랑 5C5랑 1로 똑같았잖아? 그거랑 같다고 생각하면 돼
foriinrange(n+1):cache[i][0]=1foriinrange(r+1):cache[i][i]=1# 실제 값 구하는 메인 로직
foriinrange(1,n+1):forjinrange(1,r+1):# i개의 아이템 중, j개의 아이템을 선택하는 경우의 수: 그보다 작은 두 값의 합
cache[i][j]=cache[i-1][j]+cache[i-1][j-1]returncache[n][r]print(dp(N,K))
Leave a comment