링크:https://www.acmicpc.net/problem/11726
풀이과정
이 문제는 Dynamic Programming (DP)를 사용해서 푸는 문제이다.
풀이 핵심
- 일단 타일이 늘어나면 이전 크기의 타일 왼쪽과 오른쪽에 세로로 2x1 타일을 놓는 방식을 사용할 수 있기 때문에 DP 문제라고 생각했다. (n=4라면 n=3에서 구한 타일 배치 방식의 왼쪽과 오른쪽에 세로 타일을 하나 추가하는 식)
- 직접 타일을 그려보며 점화식을 찾았다 (아래 사진 참고)
- 점화식을 사용하여 코드 구현

최종 코드
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] dp = new int[N+1];
dp[0] = 1;
dp[1] = 1;
for(int i = 2; i <= N; i++){
dp[i] = (dp[i-1] + dp[i-2])%10007;
}
bw.write(String.valueOf(dp[N]));
bw.flush();
}
}'백준' 카테고리의 다른 글
| [백준] 2630: 색종이 만들기 JAVA (0) | 2026.03.22 |
|---|---|
| [백준] 18870: 좌표 압축 JAVA (0) | 2026.03.21 |
| [백준] 9095: 1, 2, 3 더하기 JAVA (0) | 2025.12.17 |
| [백준] 2606: 바이러스 JAVA (0) | 2025.12.16 |
| [백준] 1764: 듣보잡 JAVA (0) | 2025.12.12 |