-
문제
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
문제 해석
접근 방법
전형적인 DP(Dynamic Programing) 문제입니다. 각 단계를 이전 단계의 경우의 수의 합으로 나타낼 수 있습니다.
풀이 과정
이번 문제의 경우, 각 단계는 크게 두 가지 경우로 나눌 수 있습니다.
1. 마지막 타일이 세로 타일 한 개인 경우 (세로 타일이 두 개인 경우는 여기에 포함)
2. 마지막 타일이 가로 타일 두 개인 경우결국 마지막에 어떤 타일이 오는 지에 따른 경우의 수의 합으로 생각할 수 있습니다.
전체 코드
from sys import stdin N = int(stdin.readline().rstrip()) memo = [0] * 1001 memo[1] = 1 memo[2] = 2 for i in range(3,1001): memo[i] = memo[i-1] + memo[i-2] print(memo[N] % 10007)'Algorithm > Python' 카테고리의 다른 글
[BOJ] 백준 1149 RGB 거리 (0) 2023.08.24 [BOJ] 백준 1931 회의실 배정 (Python) (0) 2023.08.23 [BOJ] 백준 2217 로프 (Python) + enumerate (1) 2023.08.22 [BOJ] 백준 2457 공주님의 정원 (Python) (1) 2023.08.22 [BOJ] 백준 1520 내리막 길 (Python) (0) 2023.08.21