본문 바로가기
백준/1 - 5000

[백준] 1003번 : 피보나치 함수(JAVA)

by lms0806 2021. 8. 23.
728x90
반응형

https://www.acmicpc.net/problem/1003

 

1003번: 피보나치 함수

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

www.acmicpc.net

풀이

특정숫자가 될때까지의 0의 갯수, 1의 갯수를 구하는 문제입니다.

2차원 dp배열로 푸시면됩니다.

0의 갯수배열, 1의 갯수배열을 만들고 피보나치dp처럼 구하시면 됩니다.

 

소스코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int[][] dp = new int[41][2];
		dp[0][0] = 1;
		dp[0][1] = 0;
		dp[1][0] = 0;
		dp[1][1] = 1;
		
		for(int i = 2; i <= 40; i++) {
			dp[i][0] = dp[i - 1][0] + dp[i - 2][0];
			dp[i][1] = dp[i - 1][1] + dp[i - 2][1];
		}
		
		int size = Integer.parseInt(br.readLine());
		
		StringBuilder sb = new StringBuilder();
		while(size --> 0) {
			int n = Integer.parseInt(br.readLine());
			sb.append(dp[n][0]).append(" ").append(dp[n][1]).append("\n");
		}
		System.out.print(sb);
	}
}
728x90
반응형

댓글