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
'코딩 > 백준' 카테고리의 다른 글
[백준/파이썬/수학] 10610번 30 코딩테스트 연습풀이 실버5 (0) | 2022.03.14 |
---|---|
[백준/파이썬/수학] 6588번 골드바흐의 추측 코딩테스트 연습풀이 실버1 (0) | 2022.03.13 |
[백준/파이썬/수학] 2576번 홀수 코딩테스트 연습풀이 브론즈3 (0) | 2022.03.10 |
[백준/파이썬/수학] 10162번 전자레인지 코딩테스트 연습풀이 브론즈4 (0) | 2022.03.09 |
[백준/파이썬/수학] 5086번 배수와 약수 코딩테스트 연습풀이 브론즈3 (0) | 2022.03.06 |