본문 바로가기
백준/C++

백준 9461번 : 파도반 수열 [C++]

by 대니스 2022. 9. 2.

주소 : https://www.acmicpc.net/problem/9461

 

9461번: 파도반 수열

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

www.acmicpc.net

소스 코드 :

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

int main()
{
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int N;
	vector<long long int> P(101);
	cin >> N;
	P[1] = 1;
	P[2] = 1;
	P[3] = 1;
	for (int i = 4; i <= 100; i++)
		P[i] = P[i - 2] + P[i - 3];

	while (N != 0)
	{
		int num;
		cin >> num;
		cout << P[num] << '\n';
		N--;
	}
}

마무리 : 수학 문제로 dp로 풀어본 결과 소스 코드에 나와 있는 계산식으로 답을 나올 수 있었다. 대신에 값이 크기 때문에 자료형 long long int로 만들어줘야한다. 그렇지 않으면 틀린다고 나온다.