heheh
히히
heheh
전체 방문자
오늘
어제
  • 히히 (75)
    • AI (14)
      • Model (Study) (3)
      • Model (Paper) (7)
      • Tip! (4)
    • Backend (3)
      • ASP.NET (1)
      • Spring (2)
      • program (0)
      • JAVA (0)
    • Program (11)
      • Docker (3)
      • Github (5)
      • AWS (3)
    • OS (1)
      • Window (1)
      • Linux (0)
    • Python (14)
      • Python Lib (11)
      • Pytorch (1)
      • Tensorflow (1)
      • 크롤링 (1)
    • Spark (3)
      • Scala (2)
      • Pyspark (0)
      • SQL (1)
    • IOS (Swift) (0)
      • 기본 개념 (0)
    • 프로젝트 (3)
      • [AI] GAN (0)
      • [IOS] Swift (3)
      • [AI] 추천시스템 (0)
    • 분석 (1)
    • 알고리즘 풀이 (22)
      • 백준 (22)
    • 기타 (3)
      • 장비세팅 (3)
      • 소개 (0)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
heheh

히히

알고리즘 풀이/백준

백준 11726번 : 2xn 타일링 (Python)

2021. 2. 4. 11:52

문제 : www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

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

www.acmicpc.net

 

풀이

 

dp에 2x1부터 경우의 수를 입력한 뒤 입력된 수를 참고하여 다음 2xn 크기의 타일링을 계산한다.

현재 주어진 타일로 겹치지 않게 가장 작게 사각형을 채우는 방법은

①세로 타일 하나로 2x1 만들기  ②가로 타일 두개로 2x2 만들기 이다.

ex) 세로 타일 두개로 2x2를 만드는 경우는 ①의 경우에 속하므로 겹치는 경우이다.

따라서 2xn 타일링 경우의 수는 [ 2x(n-1)에 ①을 붙이는 경우 + 2x(n-2)에 ②를 붙이는 경우 ]이다.

 

n = int(input())

dp = [0,1,2]

for i in range(3,n+1):
    dp.append((dp[i-2] + dp[i-1])%10007)

print(dp[n])

'알고리즘 풀이 > 백준' 카테고리의 다른 글

백준 2156번 : 포도주 시식 (Python)  (0) 2021.02.04
백준 11053 : 가장 긴 증가하는 부분 수열 (Python)  (0) 2021.02.04
백준 1003번 : 피보나치 함수 (Python)  (0) 2021.02.04
백준 1541번 : 잃어버린 괄호 (Python)  (0) 2021.02.04
백준 2667번 : 단지번호붙이기  (0) 2021.02.03
    heheh
    heheh

    티스토리툴바