728x90
✅ 백준 2225번 문제
문제
0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오.
덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다.
입력
첫째 줄에 두 정수 N(1 ≤ N ≤ 200), K(1 ≤ K ≤ 200)가 주어진다.
출력
첫째 줄에 답을 1,000,000,000으로 나눈 나머지를 출력한다.

해결 방법
잘못된 풀이아무 생각 없이 문제를 보고 중복 순열로 가져와서 출력하면 안될까? 생각을 했었다.
그 결과 당연히 시간초과가 발생했고, 정신 차린 후 DP를 이용하였다.
**DP?
DP란, 동적 계획법 (Dynamic programming)으로 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 의미한다.
DP로 해결하기 위해 점화식을 세운 후 코드를 작성하였다.
코드

- K가 1일 경우 자기 자신 밖에 해당이 안되므로 따로 계산할 필요 없이 바로 1을 출력하도록 하였다.
- K가 1이 아니라면 2차원 배열을 선언하여 1,000,000,000 를 나눈 값을 배열에 저장하였다.
728x90
'알고리즘' 카테고리의 다른 글
| [Softeer] - 우물 안 개구리 (2) | 2025.04.25 |
|---|---|
| [Softeer] - 성적 평균 (0) | 2025.04.25 |
| [프로그래머스] -PCCE 기출문제 9번 / 지폐 접기 (4) | 2025.04.25 |
| [프로그래머스] - PCCP 기출문제 1 (0) | 2025.04.25 |
| [백준]- 9086번 (0) | 2025.04.25 |