상세 컨텐츠

본문 제목

백준 9095 - 1, 2, 3 더하기 (C++)

baekjoon

by nownow 2024. 2. 16. 23:02

본문

경우의 수가 많다. dp문제로 보이므로 규칙을 찾을때까지 적어본다.

각 숫자를 1,2,3의 합으로 구하는 방법을 쭉 적어보다가 규칙을 발견할 수 있었다.

4부터 보게되면

네모를 친 1+1+1+1, 2+1+1, 1+2+1, 3+1은 4보다 1 작은 3의 네가지 경우의 수의 뒤에 1을 더한 형태

세모를 친 2+2, 1+1+2의 경우에는 4보다 2 작은 2의 2가지 경우의 수의 뒤에 2를 더한 형태

역삼각형의 경우는 4보다 3 작은 1의 1가지 경우의 수의 뒤에 3을 더한 형태다.

 

dp[i]=dp[i-1]+dp[i-2]+dp[i-3]

피보나치수가 생각나는 형태의 점화식을 찾을 수 있었다.

#include <iostream>
#include <algorithm>
#include<cmath>
using namespace std;
long long dp[12];
long long arr[12];
int countnum;
int main()
{
	cin >> countnum;
	dp[0] = 1;
	dp[1] = 2;
	dp[2] = 4;
	for (int i = 3; i < 12; i++)
	{
		dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1];
	} 
	for (int i = 0; i < countnum; i++)
	{
		int temp;
		cin >> temp; 
		cout << dp[temp - 1] << endl;
	}
}

 

'baekjoon' 카테고리의 다른 글

백준 1759 암호 만들기 (C++)  (0) 2024.02.19
백준 1697 숨바꼭질 (C++)  (0) 2024.02.18
백준 1932 정수삼각형 (C++)  (0) 2024.02.17
백준 11726 2xn 타일링(C++)  (0) 2024.02.17
백준 2579 계단 오르기 (C++)  (0) 2024.02.16

관련글 더보기