코딩/백준

[백준/파이썬/수학] 2225번 합분해 코딩테스트 연습풀이 골드5

thisisjade 2022. 3. 11. 20:31
728x90

문제 출처: https://www.acmicpc.net/problem/2225

 

2225번: 합분해

첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net

 

문제

0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오.

덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다.

 

입력

첫째 줄에 두 정수 N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)가 주어진다.

 

출력

첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.

 

예제 입력 1

20 2

 

예제 출력 1

21

 

예제 입력 2

6 4

 

예제 출력 2

84

 

정답

N, K = map(int, input().split())

mod = 1000000000 
answer = [1] 
answer += [0] * N 
for _ in range(1, K+1): 
    for i in range(1, N+1): 
        answer[i] = (answer[i] + answer[i-1])%mod

print(str(answer[N]))

경우의 수를 stack의 방법으로 계산하면 되는 문제였습니다

바로바로 생각나지 않아서 구글의 도움을 받은 문제!

다음에 한번 더 확인 필요할 것 같습니다

728x90