반응형
https://www.acmicpc.net/problem/11726
[풀이과정]
전형적인 DP 문제다. 점화식으로 풀면 됨.
직접 타일을 그려보면 f(n-1)의 가짓수에 세로 타일을 하나씩 붙이고 + f(n-2)의 가짓수에 가로 타일 2개가 붙은 모양임
f(0) = 1, f(1) = 1 이고
f(n) = f(n-2) + f(n-1)
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
2xn 크기의 직사각셩을 1x2,2x1 타일로 채우는 방법의 수 구하기
*/
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int n;
static int[] DP;
public static void main(String[] args) throws IOException{
init();
/*
[출력]
방법의 수를 10,007로 나눈 나머지
*/
DP[0] = 1;
DP[1] = 1;
for(int i = 2; i <= n; i++){
DP[i] = (DP[i-1] + DP[i-2]) % 10007;
}
System.out.println(DP[n]);
}
static void init() throws IOException {
/*
[입력]
1. n (1<=n<=1,000)
*/
n = Integer.parseInt(br.readLine());
DP = new int[n + 1];
}
}

반응형
'알고리즘 > DP' 카테고리의 다른 글
[백준] 1463 : 1로 만들기 (JAVA) (0) | 2025.04.07 |
---|---|
[백준] 2631 : 줄세우기 (JAVA) (0) | 2025.03.25 |
[백준] 22869 : 징검다리 건너기 (JAVA) (0) | 2025.03.24 |
[백준] 15989 : 1, 2, 3 더하기 4 (JAVA) (1) | 2024.11.20 |
[백준] 15988 : 1, 2, 3 더하기 3 (JAVA) (2) | 2024.11.19 |