반응형
문제
2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×17 직사각형을 채운 한가지 예이다.

입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
예제 입력 1 복사
2
예제 출력 1 복사
3
예제 입력 2 복사
8
예제 출력 2 복사
171
예제 입력 3 복사
12
예제 출력 3 복사
2731
정답 풀이
const path = process.platform === "linux" ? "/dev/stdin" : "input.txt"; // 리눅스로 테스트할 땐 따로 설정해주어야 합니다.
const [n] = require("fs")
.readFileSync(path)
.toString()
.trim()
.split("\n")
.map(Number);
function solution(n) {
const memo = [...Array(1000)];
memo[0] = 1;
memo[1] = 1;
for (let i = 2; i < n + 1; i += 1) {
memo[i] = (memo[i - 1] + memo[i - 2] * 2) % 10007;
}
console.log(memo[n]);
}
solution(n);
⭐ 문제 핵심 아이디어 ⭐
1. DP
https://junghyeonsu.tistory.com/284
[백준] 11726번: 2×n 타일링 (JavaScript, NodeJS)
문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다.
junghyeonsu.tistory.com
위의 문제와 거의 동일하다.
규칙을 찾아보면
2 x 1 두 개를 합치면 2 x 2 타일이고
1 x 2 두 개를 합치면 역시 2 x 2가 들어갈 수 있다.
그거를 생각해서 점화식을 세우면 된다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 11055번: 가장 큰 증가 부분 수열 (JavaScript, NodeJS) (0) | 2022.02.08 |
---|---|
[백준] 4153번: 직각 삼각형 (JavaScript, NodeJS) (0) | 2022.02.07 |
[백준] 11726번: 2×n 타일링 (JavaScript, NodeJS) (0) | 2022.02.05 |
[백준] 9095번: 1,2,3 더하기 (JavaScript, NodeJS) (0) | 2022.02.04 |
[백준] 9655번: 돌 게임 (JavaScript, NodeJS) (0) | 2022.02.03 |