본문 바로가기

알고리즘/백준

[백준] 1003 피보나치 함수

문제링크: www.acmicpc.net/problem/1003

 

1003번: 피보나치 함수

각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

백준 단계별로 풀어보기를 시작했다.

다이나믹프로그래밍 기초1을 다 풀어볼 예정이다. 

이 문제를 자바 Scanner로 입력 받았더니 시간초과가 떴다. BufferedReader로 바꾸고 통과

import java.io.*;
import java.util.*;
public class Main {
	
	public static int []dp0; //0이 나온 횟수
	public static int []dp1; //1이 나온 횟수
	
	public static void init(){
		dp0 = new int[41];
		dp1 = new int[41];
		dp0[0] = 1;dp0[1] = 0;
		dp1[0] = 0;dp1[1] = 1; 
		for(int i=2;i<=40;i++){
			dp0[i] = dp0[i-2] + dp0[i-1];
			dp1[i] = dp1[i-2] + dp1[i-1];
		}
	}
	public static void main(String[] args) throws Exception{
		init();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder ans = new StringBuilder();
		int tc = Integer.parseInt(br.readLine());
		for(int i=0;i<tc;i++){
			int num = Integer.parseInt(br.readLine());
			ans.append(dp0[num] + " " + dp1[num] +"\n");
		}
		System.out.println(ans);
	}

}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 11054 가장 긴 바이토닉 부분 수열  (0) 2020.12.08
[백준] 2565 전깃줄  (0) 2020.12.08
[백준] 2042 구간 합 구하기  (2) 2020.12.02
[백준] 1072 게임  (0) 2020.12.01
[백준] 1806 부분합  (0) 2020.11.24