반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[백준] 2225번 | 합분해 | C++ 본문
728x90
반응형
문제 링크: https://www.acmicpc.net/problem/2225
문제
0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오.
덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다.
입력
첫째 줄에 두 정수 N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)가 주어진다.
출력
첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.
내 풀이
어떤 수 N은 그보다 하나 작은 수인 N-1에 대한 경우의 수로 구하면 쉽게 구할 수 있다.
이 생각에 기인해 다이나믹 프로그래밍으로 푼다.
코드
#include<iostream>
int N, K;
long long f[201][201];
int main() {
scanf("%d %d", &N, &K);
for (int n = 1; n <= N; n++) {
f[n][1] = 1;
}
for (int k = 1; k <= K; k++) {
f[1][k] = k;
}
for (int n = 2; n <= N; n++) {
for (int k = 2; k <= K; k++) {
f[n][k] = (f[n - 1][k] + f[n][k - 1]) % 1000000000;
}
}
printf("%lld", f[N][K]);
return 0;
}
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[백준] 2579번 | 계단 오르기 | C++ (0) | 2021.12.20 |
---|---|
[백준] 2251번 | 물통 | Python (0) | 2021.12.17 |
[백준] 2110번 | 공유기 설치 | C++ (0) | 2021.12.09 |
[백준] 2011번 | 암호코드 | C++ (0) | 2021.12.08 |
[백준] 1932번 | 정수 삼각형 | C++ (0) | 2021.12.06 |
Comments