728x90
728x90
1. 문제 설명
피보나치 수는 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을 완성해 주세요.
2. 제한 사항
n은 2 이상 100,000 이하인 자연수입니다.
3. 입출력 예
n | return |
3 | 2 |
5 | 5 |
4. 입출력 예 설명
피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.
5. 풀이
class Solution {
public int solution(int n) {
int [] a = new int [100001];
a[0]=0; a[1]=1;
for(int i =2; i<=n; i++) {
a[i] = (a[i-2]+ a[i-1])%1234567;
}
return a[n];
}
}
더보기
으음,,, 뭔가... 진짜 억지로 푼 느낌이다.. int 범위 내 최댓값을 피하기 위해 배열에 저장할 때 바로 1234567을 나눠서 저장할 수 있도록 하고 어차피 n의 최댓값이 100000으로 나와서,, 이런 식은 아닌 것 같지만 일단 다음 문제를 풀러 가봐야겠다..
728x90
728x90
'코딩테스트(Level 2)' 카테고리의 다른 글
[JAVA, Programmers] 카펫 만들기(자바) (0) | 2022.12.15 |
---|---|
[JAVA, Programmers] 숫자의 표현(자바) (0) | 2022.12.04 |
[JAVA, Programmers] 숫자의 표현(자바) (0) | 2022.12.04 |
[JAVA, Programmers] 최솟값 만들기(자바) (0) | 2022.12.04 |
[JAVA, Programmers] 최댓값과 최솟값(자바) (0) | 2022.11.25 |