https://programmers.co.kr/learn/courses/30/lessons/12945
문제 분석
- 피보나치 수의 정의대로 n번째 피보나치 수를 1234567로 나눈 나머지를 리턴한다.
- fibo라는 정수 배열을 활용하여 각 숫자에 해당하는 피보나치 수를 구한다. (이 때, 값을 그대로 저장하게되면 시간 초과가 나기때문에 배열에 값을 저장할 때 mod를 활용하여 1234567로 나눈 나머지의 값을 저장한다)
문제 풀이
1. for문을 통해 n번째 피보나치 수를 구한다.
2. 0, 1의 경우 이미 정의된 숫자를 할당한다.
3. 그 외의 경우 1234567로 나눈 나머지의 값을 배열에 저장한다.
4. 해당 숫자에 해당하는 피보나치 수를 리턴한다.
class Solution {
public int solution(int n) {
int answer = 0;
int fibo[] = new int[n+1];
for(int i=0;i<n+1;i++){
if(i==0){
fibo[i] = 0;
}else if(i==1){
fibo[i] = 1;
}else{
fibo[i] = (fibo[i-1]+fibo[i-2])%1234567;
}
}
answer = fibo[n];
return answer;
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers 최댓값과 최솟값 (1) | 2022.05.03 |
---|---|
programmers 최솟값 만들기 (0) | 2022.05.03 |
programmers 행렬의 곱셈 (0) | 2022.05.01 |
programmers JadenCase 문자열 만들기 (0) | 2022.04.18 |
programmers N개의 최소공배수 (0) | 2022.04.18 |