-
[프로그래머스 Lv.2] 피보나치 수 javaDEV/알고리즘 2020. 10. 14. 15:48
문제설명
피보나치 수는 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은 1이상, 100000이하인 자연수입니다.
입출력 예
n return 3 2 5 5 처음엔 재귀함수를 이용해서 풀었는데 7번부터 시간초과가 나더라,
재귀함수는 단순한 로직이지만 반복할수록 메모리를 많이차지해 연산이 느려진다고한다.
그래서 일반적으로 반복문을 이용하여 풀었다.
Solution
123456789101112131415161718192021222324252627class Solution {//재귀함수 ->시간초과// public static int solution(int n) {// if(n<2) return n;// else return (solution(n-1) + solution(n-2)) % 1234567;// }public int solution(int n) {int answer = 0;//n이 3일때//f(3) = f(1)+f(2) = 1+1 = 2이므로 숫자 초기화int num1 = 1;int num2 = 1;if(n==1 || n==2) return 1;else {for(int i=3; i<=n; i++) {answer = (num1+num2)%1234567;num1 = num2;//전전수num2 = answer;//전수}return answer;}}}cs 'DEV > 알고리즘' 카테고리의 다른 글
[프로그래머스 Lv.1] 3진법 뒤집기 java (0) 2020.10.20 [프로그래머스 Lv.2] H-Index java (0) 2020.10.18 [프로그래머스 Lv.2] 다리를 지나는 트럭 java (0) 2020.10.12 [프로그래머스 Lv.2] 가장 큰 수 java (4) 2020.10.12 [프로그래머스 Lv.2] 124 나라의 숫자 java + 시간초과 해결 (0) 2020.10.07