반응형
백준 Baekjoon 2749번 피보나치 수 3 - JAVA
문제 풀이
피보나치 수의 개념을 알고 여러 문제들을 풀어봤지만, 이번 문제처럼 큰 입력은 처음으로 주어졌다. 메모리제이션을 하고 최대한 시간초과가 나지 않게 하려 해도 불가능하여 검색을 해보니 피사노라는 피보나치의 속성이 있고, 이를 활용하여 문제를 풀 수 있었다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
long n = Long.parseLong(br.readLine());
int pisano = 1_500_000;
long[] arr = new long[pisano];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i < pisano && i <= n; i++) {
arr[i] = (arr[i - 1] + arr[i - 2]) % 1_000_000;
}
System.out.println(arr[(int) ( n % pisano)]);
}
}
반응형
'알고리즘(Algorithm) > 백준(Baekjoon)' 카테고리의 다른 글
[백준 Baekjoon] 16974번 서울 지하철 2호선 - JAVA (0) | 2021.11.28 |
---|---|
[백준 Baekjoon] 16235번 나무 재테크 - JAVA (0) | 2021.11.27 |
[백준 Baekjoon] 15684번 사다리 조작 - JAVA (0) | 2021.11.25 |
[백준 Baekjoon] 14890번 경사로 - JAVA (0) | 2021.11.24 |
[백준 Baekjoon] 16236번 아기 상어 - JAVA (0) | 2021.11.23 |