반응형
Notice
Recent Posts
Recent Comments
Link
It's easy, if you try
[백준/boj] 10826: 피보나치 수4 (Java) / BigInteger / DP 본문
반응형
문제
풀이
import java.io.*;
import java.math.*;
public class Main_BOJ_10826_피보나치수4 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
static BigInteger[] dp;
public static void main(String[] args) throws Exception {
int n = Integer.parseInt(br.readLine());
dp = new BigInteger[n+1];
if(n == 0 || n == 1) {
System.out.println(n);
return;
}
dp[0]=BigInteger.ZERO; // *
dp[1]=BigInteger.ONE;
dp[2]=BigInteger.ONE;
for(int i=3; i<=n; i++) {
dp[i] = dp[i-1].add(dp[i-2]); // *
}
System.out.println(dp[n]);
}
}
- 이 문제의 경우 들어올 수 있는 수가 10,000까지 이기 때문에 일반 재귀로 풀어도 시간 초과가 나고, int / long의 범위도 넘어간다.
- 이때 사용할 수 있는게 BigInteger 이다. // * 에서 볼 수 있듯이 사용법이 좀 특이하다. String형식으로 사용되기 때문이다. 더 자세한 사용법은 아래 블로그에 나와 있다.
- https://coding-factory.tistory.com/604
- dp 를 이용해 dp[n]까지 반복문을 돌린 후 dp[n]을 사용한다. 이 방법 같은 경우는 테스트 케이스가 여러개일 수록 더 좋다!
반응형
'알고리즘 > 자바(Java)' 카테고리의 다른 글
[SW Expert Academy] 5604: 구간 합 (Java) (0) | 2021.04.20 |
---|---|
[백준/boj] 11401: 이항 계수 3 / 페르마의 소정리 / 수학 / 정수론 (0) | 2021.04.19 |
[백준/boj] 2239: 스도쿠 (Java) / 백트래킹 (0) | 2021.04.16 |
[백준/boj] 15961: 회전 초밥 (Java) / 슬라이딩 윈도우 / 투 포인터 (0) | 2021.04.15 |
[SW Expert Academy/ SWEA] 벽돌 깨기 (Java) / 구현 / 중복 순열 (0) | 2021.04.14 |
Comments