1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class Solution {
public long solution(long n) {
long answer = 0;
long a = 0, b = 1, cnt = 1;
while (cnt < n) {
a += b % 1234567;
b += a % 1234567;
cnt += 2;
}
if (cnt == n)
answer = b % 1234567;
else
answer = a % 1234567;
return answer;
}
}
|
cs |
n번째 피보나치의 수를 1234567로 나눈 값을 구하는 문제이다.
피보나치의 수는 급격하게 늘어나므로 n번째 값에 도달할 때 자료형의 범위를 초과할 수 있다.
그렇기에 a, b를 구하는 과정에서 % 1234567을 수행하고, 최종 값을 구할 때에도 % 1234567을 수행해야 한다.
모듈러 연산의 (A + B) % C ≡ ( ( A % C ) + ( B % C) ) % C 성질을 이용한 것이다.
'Programmers > Level2' 카테고리의 다른 글
이진 변환 반복하기 (0) | 2021.07.31 |
---|---|
올바른 괄호 (0) | 2021.07.31 |
N개의 최소공배수 (0) | 2021.07.30 |
땅따먹기 (0) | 2021.07.30 |
스킬트리 (0) | 2021.07.30 |