Algorithm/BOJ
BOJ 1003 피보나치 함수
wow
2021. 3. 31. 21:03
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
문제 분석
- dp문제이다.
- 0이 나오는 경우는 해당 숫자의 -1번째와 -2번째의 숫자를 더한 숫자이고, 1이 나오는 경우도 마찬이다.
- 각 값들을 배열에 저장해놓고 최종 값만 출력한다.
문제 풀이
1) 2차원 배열을 선언하여 0번 열에는 0이 출력되는 횟수를 넣는다. 1번 열에는 1이 출력되는 횟수를 넣는다.
2) 각 횟수는 -1과 -2한 각각의 값을 더한 값과 동일하다.
3) 해당 숫자의 [0]번 열과 [1]번 열을 출력하면 각각 0이 출력된 횟수와 1이 출력된 횟수를 의미한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
private static long[][] map;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
map = new long[41][2];
map[0][0] = 1;
map[0][1] = 0;
map[1][0] = 0;
map[1][1] = 1;
for (int j= 2; j <= N; j++) {
map[j][0] = map[j-1][0]+map[j-2][0];
map[j][1] = map[j-1][1]+map[j-2][1];
}
System.out.println(map[N][0]+" "+map[N][1]);
}
}// main
}// class-end