본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

백준알고리즘


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


문제의 함정은 피보나치에서 1과 0일때의 조건에 결과값을 하나하나씩 더하는 것이 아니다.

아래를 보면 0~9까지의 경우의 수를 적었는데 한 가지 공식이 발견된다.

i = n 일 때 [n-1][n-0], [n-1][0] + [n-1][1] 임을 알 수 있다.


i = 0일 때 1   0

i = 1일 때 0   1

i = 2일 때 1   1

i = 3일 때 1   2

i = 4일 때 2   3

i = 5일 때 3   5

i = 6일 때 5   8

i = 7일 때 8   13

i = 8일 때 13 21

i = 9일 때 21 34

import java.util.Scanner; public class Main { static int[][] resultArray = null; public static void main(String[] args) { Scanner scan = new Scanner(System.in); int count = Integer.parseInt(scan.nextLine().trim()); for(int i=0; i < count; i++) { int data = Integer.parseInt(scan.nextLine().trim()); resultArray = new int[data+1][2]; calculate(data); } scan.close(); } static void calculate(int value) { resultArray[0][0] = 1; resultArray[0][1] = 0; if(value == 0) { System.out.println(resultArray[0][0] + " " + resultArray[0][1]); return; } for(int i=1; i <= value; i++) { resultArray[i][0] = resultArray[i-1][1]; resultArray[i][1] = resultArray[i-1][0] + resultArray[i-1][1]; } System.out.println(resultArray[value][0] + " " + resultArray[value][1]); } }