728x90
문제를 간단히 설명하면, 주어진 정수를 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 문제입니다.
문제를 풀면 아래 코드가 나옵니다.
#include <stdio.h>
int main() {
int T; // 테스트 케이스의 수
scanf("%d", &T);
while (T--) {
int n; // 1, 2, 3의 합으로 나타내고자 하는 수
scanf("%d", &n);
int dp[11] = {0, 1, 2, 4}; // DP 배열 초기화
for (int i = 4; i <= n; i++) {
dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
}
printf("%d\n", dp[n]);
}
return 0;
}
위 코드에서 T는 테스트 케이스의 수를 의미합니다. scanf 함수를 사용하여 T를 입력받습니다. 그리고 while문을 사용하여 T만큼 반복합니다.
각 테스트 케이스에서는 n을 입력받습니다. dp 배열은 다이나믹 프로그래밍을 위해 사용됩니다. dp[1], dp[2], dp[3]은 각각 1, 2, 4로 초기화합니다. 이는 문제에서 1, 2, 3을 사용하여 나타내는 방법의 수가 각각 1, 2, 4임을 알 수 있습니다.
for문을 사용하여 dp 배열을 구합니다. dp[i]는 dp[i-1], dp[i-2], dp[i-3]의 합과 같습니다. 마지막으로, dp[n]을 출력합니다.
728x90
'백준 문제 풀이 > c언어' 카테고리의 다른 글
백준 1152 C언어 문제 풀이 - 단어의 개수 (0) | 2024.01.28 |
---|---|
백준 1018 C언어 문제 풀이 - 체스판 다시 칠하기 (0) | 2024.01.28 |
백준 1008 C언어 문제 풀이 - A/B (0) | 2024.01.28 |
백준 1001 C언어 문제 풀이 - A-B (1) | 2024.01.26 |
백준 1000 C언어 문제 풀이 - A+B (0) | 2024.01.26 |