[12945] 피보나치 수 ⭐⭐
태그: cpp, Programmers
카테고리: Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/12945
난이도 ⭐⭐
문제
나의 풀이
오버플로우가 발생하지 않도록 주의하는 게 포인트였던 것 같다.
int 가 담을 수 있는 수의 범위는 –2,147,483,648 ~ 2,147,483,647 인데,
50번째 피보나치 수만 해도 12,586,269,025 가 나온다.
그러므로 피보나치 수 계산할 때, 마지막에서만 나눠주는 게 아니라 중간에 한번씩 나눠줘서 값의 크기를 줄여줘야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include <vector>
using namespace std;
int solution(int n)
{
int answer = 0;
int first = 0;
int second = 1;
for (int i = 2; i <= n; i++)
{
answer = (first + second) % 1234567;
first = second % 1234567;
second = answer;
}
return answer;
}
댓글남기기