
나의 풀이
class Solution {
public int solution(int n) {
int answer = 0;
long a = 0; // 1
long b = 1;
for (int i = 2; i <= n; i++) { // 2
long temp = (a + b) % 1234567;
a = b;
b = temp;
}
answer = (int)(b % 1234567); // 3
return answer;
}
}
과정
- 0번째와 1번째를 초기화
- n까지 증가하는 반복문으로 피보나치 수열을 계산(오버플로우 방지를 위해 1234567로 나눈 나머지를 사용)
- int형으로 바꾼 b를 1234567로 나누어서 대입
다른 사람 풀이
class Solution {
public int solution(int n) {
int answer = 0;
long[] pib=new long[n+1];
pib[0]=0L;
pib[1]=1L;
int times=1;
for(int i=2; i<=n; i++){
pib[i]=(pib[i-1]+pib[i-2])%1234567L;
}
//answer=(int)(pib[n]%1234567L);
answer=(int)(pib[n]);
return answer;
}
}