‡ CODING TEST STUDY ‡/º 백준

[백준 9095번 C++] 1,2,3 더하기

Trudy | 송연 2023. 10. 7. 14:53

9095번: 1, 2, 3 더하기 (acmicpc.net)

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net


DP니까 규칙을 찾아봅시당

n=1 일 때, 1가지 1

n=2 일 때, 2가지 1 + 1 = 2

n=3 일 때,  4가지 1+1+1 = 1+2 = 2+1 = 3

n=4 일 때, 7가지 1+1+1+1 = 1+1+2 = 1+2+1 = 2+1+1 = 2+2 = 1+3 = 3+1

n=5 일 때, 13가지 1+1+1+1+1 =

1+1+1+2 = 1+1+2+1 = 1+2+1+1 = 2+1+1+1 =

1+2+2 = 2+1+2 = 2+2+1  = 

1+1+3 = 1+3+1 = 3+1+1 = 

2+3 = 3+2

 

점화식이 T(n) = T(n-1) + T(n-2)+T(n-3)인 것 같다

확인하기 위해 예제 출력에서 T(7) = 44가 나오는지 확인해본다

 

위 점화식이 맞다면

T(6) = 4+7+13 = 24

T(7) = 7+13+24 = 44  => 맞다!!

 

그렇게 코드를 작성했더니 맞았당

#include <iostream>
using namespace std;

int main()
{
    int arr[11] = {0, 1, 2, 4, };
    for(int i=4; i<=10; i++){
        arr[i] = arr[i-1] + arr[i-2] + arr[i-3];
    }
    
    int T, n;
    cin >>  T;

    
    for(int i=0; i<T; i++){
        cin >> n;
        cout << arr[n] << "\n";
    }

    return 0;
}