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

오늘 날씨는 야옹·2023년 3월 3일
0

백준

목록 보기
8/15

문제

정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.
1+1+1+1
1+1+2
1+2+1
2+1+1
2+2
1+3
3+1
정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.

출력

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

코드

#include <iostream>
#include <vector>
using namespace std;

int main() {
	int x, t;
	vector<int> add_number(9);
	vector<int> number(10);

	add_number[0] = 1;
	add_number[1] = 2;
	add_number[2] = 3;
	for (int i = 3; i < 10; i++) {
		add_number[i] = add_number[i - 3] + add_number[i - 2] + add_number[i - 1];
	}
	
	number[0] = 1;
	for (int i = 1; i < 10; i++) {
		number[i] = number[i - 1] + add_number[i - 1];
	}

	cin >> t;
	while (t > 0) {
		cin >> x;
		if (x < 1 || x > 10) break;
		cout << number[x - 1] << '\n';
		t--;
	}
}

빡세다......
더하는 수가 이전 1, 2, 3항의 값을 더한 거였음
원래 수는 이전 1항+더하는 수

0개의 댓글