백준 9461번 (파도반 수열, C++, DP) [BAEKJOON]

파도반 수열

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

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초128 MB78451344472823642.567%

문제

오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다.

그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다.

나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다.

파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 숫자는 1, 1, 1, 2, 2, 3, 4, 5, 7, 9이다.

N이 주어졌을 때, P(N)을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있고, N이 주어진다. (1 ≤ N ≤ 100)

출력

각 테스트 케이스마다 P(N)을 출력한다.

예제 입력 1

2
6
12

예제 출력 1

3
16

출처

ICPC > Regionals > Asia Pacific > Korea > Asia Regional – Daejeon 2013 G번

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: eric00513

알고리즘 분류


생각보다 점화식을 찾는데 오래 걸렸다.

통과된 코드

#include <iostream>

using namespace std;

int T, N;

// int형 범위를 넘어갈 수 있다.
long long int arr[101] = {0, 1, 1, 1, 2, 2};

int main()
{
	cin >> T;

	// 테스트 케이스 만큼 반복
	for (int i = 0; i < T; i++) {

		cin >> N;

		for (int j = 6; j <= N; j++) { 
			
			// 값이 있다면 연산할 필요가 없다.
			if (arr[j] == 0) arr[j] = arr[j - 1] + arr[j - 5];

		}

		// 결과 출력
		cout << arr[N] << "\n";
	}

	return 0;
}

“백준 9461번 (파도반 수열, C++, DP) [BAEKJOON]”에 대한 1개의 생각

  1. Good day! Do you know if they make any plugins to help with Search Engine Optimization? I’m trying to get my site to rank for
    some targeted keywords but I’m not seeing very good success.
    If you know of any please share. Cheers! I saw similar article here:
    Warm blankets

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤