[백준] 2748 피보나치 수 2 (JAVA)

leeng·2024년 5월 3일
0
  1. bw.write() 안에 int형 데이터를 넣었더니 문자형으로 변경돼서 출력된다. (답이 55면 7으로... 7의 아스키코드가 55니까)
    String으로 형변환해서 출력하자!

  2. 분명 테스트케이스는 맞는데 자꾸 틀렸다고 나와서 혹시...? 하고 90을 넣고 돌려봤더니 -어쩌구저쩌구 숫자가 나왔다. 아 너무 큰 숫자구나!! 챗지피티를 이용해서 너무 큰 정수를 담는 법을 알아내서 코드를 고쳤다...

import java.io.*;
import java.math.BigInteger;

public class Main {
static BigInteger[] answers;

public static void main(String... args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    int n = Integer.parseInt(br.readLine());
    answers = new BigInteger[n + 1];
    br.close();
    bw.write(String.valueOf(fibonacci(n)));
    bw.flush();
    bw.close();
}

static BigInteger fibonacci(int n) {
    if(n==0) return BigInteger.ZERO;
    if(n==1) return BigInteger.ONE;

    if (answers[n] == null) {
        answers[n] = fibonacci(n - 1).add(fibonacci(n - 2));
    }
    return answers[n];
}

}

profile
기술블로그보다는 기록블로그

0개의 댓글