공부/코딩테스트

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

rlacofls294 2025. 4. 9. 15:15

https://www.acmicpc.net/problem/9095

 

 

문제 탐색

입력 : n

0<n<11

 

필요한 식

1. 배열 초기화

dp[0] = 1;
dp[1] = 2;
dp[2] = 4;

for(int i = 3; i < 11; i++){
   dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
}

사실 시간 복잡도는 고려 안해도 될 정도..의 숫자라서~

미리 123 조합을 구해뒀습니다

한 5까지의 조합을 구해보니 규칙이 나오더라고요!!!

 

2. 케이스 입력

 1) 테스트 케이스 수 입력 = t

 2) 구하고 싶은 숫자 입력 * t

 3) 해당 수의 조합 출력

 

그래서 순서를

1) 배열 초기화

2) 테스트 케이스 입력

3) 구하고 싶은 숫자 입력 반복문

4) 조합의 수 출력 반복문

이렇게 구성했습니다.

 

최종 코드

#include <iostream>

using namespace std;

int dp[11];

int main(){
  dp[0] = 1;
  dp[1] = 2;
  dp[2] = 4;

  for(int i = 3; i < 11; i++){
    dp[i] = dp[i-1] + dp[i-2] + dp[i-3];
  }

  int t;
  cin >> t;

  int test[t];

  for(int i = 0; i < t; i++){
    cin >> test[i];
  }

  for(int i = 0; i<t;i++){
    cout << dp[test[i]-1]<< "\n";
  }
  
  return 0;
}

이렇게 됩니다~~!!!