반응형
문제 설명
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.
예를들어
F(2) = F(0) + F(1) = 0 + 1 = 1
F(3) = F(1) + F(2) = 1 + 1 = 2
F(4) = F(2) + F(3) = 1 + 2 = 3
F(5) = F(3) + F(4) = 2 + 3 = 5
와 같이 이어집니다.
2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요.
제한 사항
n은 2 이상 100,000 이하인 자연수입니다.
[실패 코드]
class Solution {
public int solution(int n) {
int answer = 0;
answer = function(n);
return answer;
}
public int function(int n){
if(n == 0) return 0;
else if(n == 1) return 1;
else return (function(n-2)+function(n-1))%1234567;
}
}
//재귀함수 사용 시 반복 수 높아서 실패함
[성공 코드]
class Solution {
public int solution(int n) {
int answer = 0;
int[] arr = new int[n+1];
for(int i=0; i<=n; i++){
if(i==0) arr[i] = 0;
else if(i==1) arr[i] = 1;
else{
arr[i] = arr[i-1]%1234567 + arr[i-2]%1234567;
}
}
answer = arr[n]%1234567;
return answer;
}
}
// 배열을 이용하여 해당 값을 저장하여 불필요한 반복 제거
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[#프로그래머스] 다음 큰 숫자 (0) | 2023.02.06 |
---|---|
[#프로그래머스] 숫자의 표현 (0) | 2023.02.06 |
[#프로그래머스] 올바른 괄호 (0) | 2023.02.01 |
[#프로그래머스] 두 개 뽑아서 더하기 (0) | 2023.02.01 |
[#프로그래머스] 내적 (0) | 2023.02.01 |
댓글