본문 바로가기

코딩 테스트/백준(java)

DP - 2748. 피보나치 수 2

반응형

문제

www.acmicpc.net/problem/2748

 

2748번: 피보나치 수 2

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

 

잠깐만

그냥 피보나치 아닌가요..?

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int target = Integer.parseInt(st.nextToken()); 
		
		long f0 = 0;
		long f1 = 1;
		
		for (int n = 2; n <= target; n++) {
			long fn = f0 + f1;
			f0 = f1;
			f1 = fn;
		}
		
		System.out.print(f1);
	}
}

 

설명

90번째 항을 호출하면 오버플로우가 발생해서, long 타입으로 구현했습니다.(처음엔 빅인티저를 사용했어요)

이렇게 하는거 맞죠..?

반응형

'코딩 테스트 > 백준(java)' 카테고리의 다른 글

DP - 1912. 연속합  (0) 2021.03.30
DP - 2193. 이친수  (0) 2021.03.30
DP - 11053. 가장 긴 증가하는 부분 수열  (0) 2021.03.30
DP - 2156. 포도주 시식  (0) 2021.03.29
DP - 10870. 피보나치 수 5  (0) 2021.03.28