코테/백준

[백준/JAVA] 2133번: 타일 채우기

imname1am 2023. 8. 31. 09:57
반응형

🔺 문제

 

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

반응형