Publish:

태그: ,

카테고리:

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;
}

이슈 및 공부한 것을 기록해두는 개인 블로그 입니다. 댓글, 피드백 환영합니다 🙂

Update:

댓글남기기