본문 바로가기

백준 문제 풀이/c언어

백준 9095 C언어 문제 풀이 - 1, 2, 3 더하기

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