본문 바로가기

백준

백준9461 - 파도반 수열

 

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

 

9461번: 파도반 수열

문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다. N이 주어졌을 때, P(N)을 구하

www.acmicpc.net

DP문제이다.

수열의 5번째 항까지 규칙이 적용되지 않은채 정해진 값이 들어간다.

수열의 6번째 항부터는 바로 전번째 항 더하기 구하려는 항으로 부터 5번째 뒤에 있는 항을 더한다.

#include <iostream>
using namespace std;

long long int mat[101]; //수열의 항이 어느정도 커질지 모르기 때문에 long long int 선언

int main() {

	int T; //입력할 갯수
    
    
    //5번째 항까지 숫자를 정해 놓는다.
	mat[1] = 1;
	mat[2] = 1;
	mat[3] = 1;
	mat[4] = 2;
	mat[5] = 2;
    
    //6번째 항부터 100번째 항까지 파도반 수열을 구한다.
	for (int i = 6; i <= 100; i++) {
		mat[i] = mat[i - 1] + mat[i - 5];
	}
    
    
	cin >> T;
	while (T--) { //T번 반복
		int a;
		cin >> a;
		cout << mat[a] << '\n'; //입력한 숫자의 해당 dp값을 출력해 준다.
	}
}

'백준' 카테고리의 다른 글

백준1238 - 파티  (0) 2019.06.26
백준15953 - 상금 헌터  (0) 2019.06.23
백준1449 - 수리공 항승  (0) 2019.06.20
백준5622 - 다이얼  (0) 2019.06.19
백준3986 - 좋은단어  (0) 2019.06.19