[알고리즘] Swift -백준 #11727(2×n 타일링 2) -DP

2023. 3. 27. 22:06ALGORITHM/Swift

728x90
반응형

문제링크

 

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로 나눈 나머지를 출력한다.

예제 입력 1 

2

예제 출력 1 

3

예제 입력 2 

8

예제 출력 2 

171

예제 입력 3 

12

예제 출력 3 

2731

 

 

 

분석

1x2, 2x1, 2x2 타일로 채우는 방법의 수를 구하는 문제

 

풀이 과정

일단 타일을 채우기 위해서는 아래의 그림처럼 세가지의 형태로 채워야한다.

 

 

 

 

풀이

import Foundation

let n = Int(readLine()!)!

var map = Array(repeating: 0, count: 1001)
map[1] = 1
map[2] = 3

if n > 2 {
    for i in 3..<n+1 {
        map[i] = (map[i-1] + 2*map[i-2]) % 10007
    }
}

print(map[n])

 

결과

 

 

 


📂  정리

범위를 처음과 끝은 입력해보자

그리고 범위를 잘 확인해서 반복문을 돌리자 초기값이 변경될 수 있다.

 

 

 

 

728x90
반응형