백준 9095 - 1, 2, 3 더하기

황재진·2024년 7월 29일

백준

목록 보기
50/54

1부터 차례대로 나올 수 있는 방법을 나열해서 보면 좋습니다.

위 사진을 보면 1,2,3을 이용해 4를 만드는 조합의 수는 3을 만드는 조합에서 1을 더한 것과 2를 만드는 조합에서 2를 더한 것과 1을 만드는 조합에서 3을 더한 것을 모두 합치면 됩니다.

즉, 아래 식이 만들어집니다.

cnt[n]=cnt[n1]+cnt[n2]+cnt[n3]cnt[n]=cnt[n-1]+cnt[n-2]+cnt[n-3]

1, 2, 3을 만드는 수는 해당 식이 성립하지 않으니 직접 넣어줘야 합니다.

#include <iostream>
#include <vector>

int main()
{
	int caseCnt;
	std::cin >> caseCnt;

	for (int i = 0; i < caseCnt; i++)
	{
		int num;
		std::cin >> num;
		std::vector<int> cnts(12);

		cnts[1] = 1;
		cnts[2] = 2;
		cnts[3] = 4;

		for (int j = 4; j <= num; j++)
			cnts[j] = cnts[j - 1] + cnts[j - 2] + cnts[j - 3];

		std::cout << cnts[num] << "\n";
	}

	return 0;
}
profile
프로그래밍, 쉐이더 등 이것저것 다해보는 게임 개발자입니다

0개의 댓글