

-Code
import java.io.*;
public class BOJ2302 {
static int[] dp = new int[41];
static {
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= 40; i++) {
dp[i] = dp[i - 1] + dp[i - 2];
}
}
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
int range = Integer.parseInt(br.readLine());
int cnt = Integer.parseInt(br.readLine());
int answer = 1;
int before = 1;
for (int i = 0; i < cnt; i++) {
int vip = Integer.parseInt(br.readLine());
int nowRange = vip - before;
// vip 다음 위치 부터 시작해야 하므로 +1
before = vip + 1;
answer *= dp[nowRange];
}
// 마지막 끝값이므로 + 1로 처리하여 범위를 맞춰줌
answer *= dp[range - before + 1];
System.out.println(answer);
}
}
dp를 계산할 때 피보나치의 수인 것은 알아서 처음에 구현을 하고 예제에 맞는 입출력이 나왔으나 틀렸었습니다. 그래서 찾아보니 0인 경우인 자기 자신 하나만 포함된 경우에도 계산을 해줘야 하는데 dp를 1부터 계산하여 틀렸었습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 2641번 다각형그리기 (0) | 2026.02.13 |
|---|---|
| [백준/Java] 35071번 Circular Shortcut (0) | 2026.02.13 |
| [백준/Java] 24610번 Who Goes There? (0) | 2026.02.12 |
| [백준/Java] 2615번 오목 (0) | 2026.02.11 |
| [백준/Java] 2668번 숫자고르기 (0) | 2026.02.11 |