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

leeng·2024년 5월 3일
  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개의 댓글