반응형
🔺 문제
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.util.*;
import java.io.*;
public class Main {
static int mod = 10007;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[] D = new long[1001];
D[1] = 1;
D[2] = 2;
for(int i = 3 ; i <= N ; i++) {
D[i] = (D[i - 1] + D[i - 2]) % mod;
}
System.out.println(D[N]);
}
}
|
cs |
✅ 해결 아이디어
✔ DP - 점화식
💥 유의사항
⇨ 배열 D의 길이 : 1001로 해야 함. (N + 1로 하면 런타임 에러 (ArrayIndexOutOfBounds) 뜸)
(배열 D를 int형으로 하고 크기를 n + 2로 하신 분도 계심)
⇨ 배열 D 선언 시, long형으로 해야 함
🔺 다른 풀이들
- 코드는 비슷하지만 과정 설명이 굿
[백준] 11726번: 2×n 타일링 - JAVA
🔗 문제 링크 BOJ 11726번: 2×n 타일링 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한
girawhale.tistory.com
💬 느낀 점
경우의 수 직접 그려보는 게 편해~~ 하하
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V | 7/5 |
(+7/5 2회독)
배열 선언할 때 길이 N + 1로 했는데 에러 안 났넨... 왜지...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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];
dp[0] = dp[1] = 1;
for(int i = 2 ; i <= N ; i++) {
dp[i] = (dp[i-2] + dp[i-1]) % 10007;
}
System.out.println(dp[N]);
}
}
|
cs |
반응형