[BOJ] 백준 1003 - 피보나치 함수

note.JW·2021년 1월 12일
0

Algorithm

목록 보기
3/10
post-thumbnail

1003 번 문제 풀이

using Java 11

1003 문제 보기

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

public class boj1003 {
	public static int zeroCount;
	public static int oneCount;
	public static int zeroPlusOne;
	public static void fib(int num) {
		zeroCount = 1;
		oneCount = 0;
		zeroPlusOne = 1;
		for(int i = 0; i < num; i++) {
			zeroCount = oneCount;
			oneCount = zeroPlusOne;
			zeroPlusOne = zeroCount + oneCount;
		}
		
	}
	
	public static void main(String args[]) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		StringBuilder sb = new StringBuilder();
		
		for(int i = 0; i < N; i++) {
			int num = Integer.parseInt(br.readLine());
			fib(num);
			sb.append(zeroCount).append(" ").append(oneCount).append("\n");
		}
		System.out.println(sb);
	}
}

📍 DP를 정복해보자
매번 할 때마다 어렵다... 쉬운 거라도 하나씩 해서 정복 해보자ㅠ

이번 문제는 정석적으로 풀었다기 보다는 규칙을 찾아서 풀었다. 생각으로는 0, 1 두 개 열을 가진 이차원 배열을 선언해서 메모이제이션 하는 방식으로 하려 했는데 간단한 규칙이 보여 이걸로 해결했다.

📍 BufferedReader, StringBuilder 사용
확실히 스캐너 보다 시간적으로 유리하다는 걸 확인했다. 자바로 풀이 한지 얼마 안 됐는데 친해져보자 자바,,

(참고: https://st-lab.tistory.com/124)

profile
🎆우주란 무엇일까🎆

0개의 댓글