반응형
인증사진(2024-02-11)
문제
피보나치 수는 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을 완성해 주세요.
답
class Solution {
public int solution(int n) {
// n이 0이거나 1인 경우, 그대로 반환
if (n == 0) return 0;
if (n == 1) return 1;
// 피보나치 수를 저장할 배열을 생성
int[] fibo = new int[n + 1];
// 초기값을 설정합니다.
fibo[0] = 0;
fibo[1] = 1;
// 피보나치 수를 계산
for (int i = 2; i <= n; i++) {
fibo[i] = (fibo[i - 1] + fibo[i - 2]) % 1234567;
}
// n번째 피보나치 수를 반환
return fibo[n];
}
}
추가공부
fibo[i]는 i번째 피보나치 수를 의미.
점화식인 fibo[i] = fibo[i - 1] + fibo[i - 2]를 사용하여 계산하는데 나머지 연산자를 사용하여 값이 너무 커지는 것을 방지하고, 문제에서 요구하는 대로 값을 1234567로 나눈 나머지를 저장하기로 한다.
반응형
'DEV' 카테고리의 다른 글
[pythonStudy] 양꼬치 (0) | 2024.02.25 |
---|---|
[javaStudy] 아이스 아메리카노 (0) | 2024.02.18 |
[javaStudy] 숫자 문자열과 영단어 (1) | 2024.02.04 |
[javaStudy] 같은 숫자는 싫어 (0) | 2024.01.28 |
[javaStudy] 직사각형 별찍기 (1) | 2024.01.21 |