https://www.acmicpc.net/problem/14495
접근 방법
f(1) = f(2) = f(3) = 1 이므로 미리 초기화, n을 입력받아 n번째 피보나치 비스무리한 수를 출력해야 하므로, vector로 선언(배열로 해도 굳이 상관은 없을듯)
f(n) = f(n-1) + f(n-3) 이므로, v[i] = v[i-1] + v[i-3] 으로 반복문을 돌며 n번째 비스무리한 수까지 계산
코드
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
if (n == 1 || n == 2 || n == 3) {
cout << 1;
return 0;
}
vector<long long> v(n + 1);
v[1] = 1; v[2] = 1; v[3] = 1;
for (int i = 4; i <= n; i++) {
v[i] = v[i - 1] + v[i - 3];
}
cout << v[n];
return 0;
}
발생한 에러
int Fibo(int n) {
if (n == 1 || n == 2 || n == 3) return 1;
else return Fibo(n-1) + Fibo(n-3);
}
- 재귀적으로 처리하려고 시도
- 런타임 에러 발생
if (n == 1 || n == 2 || n == 3) {
cout << 1;
return 0;
}
- 코드에서 위 조건문을 작성하지 않은 상태로 Test Case에 n=1을 입력하면 제대로 실행이 안되는 오류가 발생
- 실제로 백준에서도 런타임 에러(InvalidNextSize)의 에러가 발생
*이유가 뭔지는 아직도 모르겠음*
- 실제로 백준에서도 런타임 에러(InvalidNextSize)의 에러가 발생
'Koala - 17기 > 코딩테스트 심화 스터디' 카테고리의 다른 글
[백준/Python] 1915번 : 가장 큰 정사각형 (0) | 2025.01.18 |
---|---|
[BOJ/Python3] 2618 번 : 경찰차 (0) | 2025.01.16 |
[백준/Python] 23559번 : 밥 (0) | 2025.01.12 |
[백준/Python] 14888번 : 연산자 끼워넣기 (0) | 2025.01.12 |
[백준/Python] 20950번 : 미술가 미미 (0) | 2025.01.12 |