월하점
월하점의 개발 공부 일지
월하점
전체 방문자
오늘
어제
  • 분류 전체보기 (96)
    • Back-end (3)
    • PROJECT (1)
    • CS (15)
      • Operating System (0)
      • Network (4)
      • Data Structure (7)
      • Algorithm (0)
      • Database (4)
    • Problem Solving (52)
    • Programming Languages (1)
      • Javascript (0)
      • Python (1)
      • JAVA (0)
    • Codestates BEB 4기 (7)
    • Blockchain (12)
    • Linux (2)
    • Git (1)
    • 잡다한 (2)

공지사항

인기 글

태그

  • node.js
  • django
  • 알고리즘
  • Python
  • baekjoon
  • CS
  • 프로그래머스
  • 네트워크
  • SWEA
  • 자료구조
  • javascript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
월하점

월하점의 개발 공부 일지

  • HOME
  • GUEST
  • WRITE
[백준] 11727 - 2xn 타일링 2 in 파이썬
Problem Solving

[백준] 11727 - 2xn 타일링 2 in 파이썬

2022. 9. 1. 01:26

문제 출처

 

11727번: 2×n 타일링 2

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

www.acmicpc.net

 

문제

2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.

아래 그림은 2×17 직사각형을 채운 한가지 예이다.

 

입력

첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)

출력

첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.


문제 풀이

규칙을 찾으면 되는 문제였다.

위와 같이 2x4 타일링까지 찾아본 결과,

 

N >= 3 일 때, 2xN 타일링은 다음과 같은 규칙을 갖는다.

1. 2*(N-1) 타일링에 2*1 타일을 하나 붙인다.
2. 2*(N-2) 타일링에 1*2 타일을 두 개 붙인다.
3. 2*(N-2) 타일링에 2*2 을 하나 붙인다.

따라서, DP 식은 dp[n] = dp[n-1] + 2*(dp[n-2]) 이다.

 

작성 코드

import sys
input = sys.stdin.readline

dp = [0, 1, 3]
for i in range(3, 1001):
  dp.append((dp[i-1] + dp[i-2]*2) % 10007)
n = int(input())
print(dp[n])

 

저작자표시 비영리 변경금지 (새창열림)

'Problem Solving' 카테고리의 다른 글

[백준] 16194 - 카드 구매하기2 in 파이썬  (0) 2022.09.04
[백준] 11052 - 카드 구매하기 in 파이썬  (0) 2022.09.04
[프로그래머스] level 1 - 크레인 인형뽑기 게임 in 파이썬  (0) 2022.08.18
[백준] 17299 - 오등큰수 in 파이썬  (0) 2022.08.12
[백준] 1406 - 에디터 in 파이썬  (0) 2022.08.07
    'Problem Solving' 카테고리의 다른 글
    • [백준] 16194 - 카드 구매하기2 in 파이썬
    • [백준] 11052 - 카드 구매하기 in 파이썬
    • [프로그래머스] level 1 - 크레인 인형뽑기 게임 in 파이썬
    • [백준] 17299 - 오등큰수 in 파이썬
    월하점
    월하점
    개발 공부를 기록합니다. 웹을 위주로 공부하며 컴퓨터과학 이론도 함께 정리할 계획입니다.

    티스토리툴바