View

반응형

 

알고리즘 분류: 수학, 다이나믹 프로그래밍

문제 링크: https://www.acmicpc.net/problem/9461

 

9461번: 파도반 수열

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의

www.acmicpc.net

 

 

【 풀이 】

 

동적계획법으로 해결 가능한 문제이다.

다른 DP 문제들과 마찬가지로 규칙을 찾아 점화식을 도출해 내는 것이 중요하다.

 

역시 규칙을 찾을 때까지 나열해보고 분석하면 된다.

1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12

 

  • P[1] = 1
  • P[2] = 1
  • P[3] = 1
  • P[4] = P[1] + P[2] = 2
  • P[5] = P[2] + P[3] = 2
  • P[6] = P[3] + P[4] = 3
  • ....
  • 점화식: P[N] = P[N-3] + P[N-2] 

 

 

 

【 코드 】

 

#include<iostream>
using namespace std;

int main(void)
{
	long long int wave[101];
	wave[1] = 1; wave[2] = 1; wave[3] = 1;

	int t;
	cin >> t;
	for (int i = 1; i <= t; i++)
	{
		int n;
		cin >> n;
		for (int i = 4; i <= n; i++)
			wave[i] = wave[i - 3] + wave[i - 2];

		cout << wave[n]<<'\n';
	}
	return 0;
}

 

 

 

728x90
반응형
Share Link
reply
250x250
반응형
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31