반응형
🔺 문제
2133번: 타일 채우기
3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자.
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[] dp = new long[N + 1];
// 홀수일 경우, 채울 수 없으므로 0 출력하고 종료
if(N % 2 != 0) {
System.out.println(0);
return;
}
// N은 짝수만 가능
dp[0] = 1; // 아무 것도 채우지 않는 경우
dp[2] = 3;
for(int i = 4 ; i <= N ; i += 2) { // 짝수만 가능하므로 2씩 증가
dp[i] = dp[i - 2] * dp[2];
for(int j = i - 4 ; j >= 0 ; j -= 2) { // 예외 케이스 더하기
dp[i] += (dp[j] * 2); // 2는 예외 케이스
}
}
System.out.println(dp[N]);
}
}
|
cs |
✅ 해결 아이디어
✔ DP
- 점화식 : 그 전전 타일 만드는 방법 수 * 이전에 나타난 특별한 타일 개수(2)
💬 느낀 점
식 구하는 것이 너무나 어렵도다.....ㅠ
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[백준 2133 : JAVA] 타일 채우기 / DP
문제 풀이 먼저 N이 홀수일 경우는 타일로 완전히 채울 수 없다. 타일은 2의 배수인데, N이 홀수가 되어버리면 벽의 넓이가 홀수가 되기 때문이다. 즉, 타일로 벽을 가득 채우기 위해선 벽의 넓이
pangtrue.tistory.com
[JAVA/2133번] 타일 채우기
해결방법3xN 크기의 벽을 1x2와 2x1의 타일로만 채울 때, 경우의 수를 구해야 하는 문제이다.DPN = R의 공식을 사용하여 표현해보자면, 3xN의 벽을 1x2, 2x1의 타일로만 채울 때, 채울 수 있는 경우의 수
velog.io
- 이 글 특히 짱,,,
[백준 2133번] 타일 채우기 - java
문제 설명 1. 3XN 크기의 벽을 2X1, 1X2 타일로 채우는 경우의 수를 구해보자! 2. 문제 길이가 겁나 짧다... 그냥 이게 다임 풀이 과정 1. DP문제이다. 참 이 문제는...고민할 내용은 정말정말정말정말
hello-backend.tistory.com
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 14225번: 부분수열의 합 (0) | 2023.09.01 |
---|---|
[백준/JAVA] 1339번: 단어 수학 (0) | 2023.08.31 |
[백준/JAVA] 2529번: 부등호 (0) | 2023.08.31 |
[백준/JAVA] 11057번: 오르막 수 (0) | 2023.08.30 |
[백준/JAVA] 1309번: 동물원 (0) | 2023.08.29 |