반응형
백준 - 단계별로 풀어보기 [9461]
https://www.acmicpc.net/problem/9461
문제
풀이
파도반 수열의 규칙성을 찾아보자.
P(1) = 1
P(2) = 1
P(3) = 1
P(4) = 2 ( P(1) + P(2) )
P(5) = 2 ( P(2) + P(3) )
P(6) = 3 ( P(3) + P(4) )
P(7) = 4 ( P(4) + P(5) )
이를 통해 다음과 같은 일종의 피보나치 수열 꼴의 점화식을 생성할 수 있다.
P(N) = P(N-3) + P(N-2)
코드
#include <iostream>
using namespace std;
long long Parray[101] = {0,1,1,};
long long P(int N)
{
if(N < 3)
return Parray[N];
else if(Parray[N] == 0)
Parray[N] = P(N-2) + P(N-3);
return Parray[N];
}
int main() {
int T;
int N;
cin >> T;
for(int i = 0; i < T; i++)
{
cin >> N;
cout << P(N) << '\n';
}
}
평가
분명히 테스트케이스도 맞고, 점화식도 맞는데 틀리는 경우는 무조건 자료형을 의심해야한다.
피보나치 수열의 값은 N이 커짐에 따라 빠르게 증가하므로, 반드시 long long 자료형을 사용해야한다.
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준 / BOJ] - 1149번 RGB거리 C++ 풀이 (0) | 2020.04.06 |
---|---|
[백준 / BOJ] - 1904번 01타일 C++ 풀이 (0) | 2020.03.29 |
[백준 / BOJ] - 1003번 피보나치 함수 C++ (0) | 2020.03.27 |
[백준 / BOJ] - 2748번 피보나치 수2 C++ 풀이 (1) | 2020.03.27 |
[백준 / BOJ] - 14889번 스타트와 링크 C++ 풀이 (삼성 코딩테스트 기출) (0) | 2020.03.11 |