[알고리즘] Swift -백준 #11727(2×n 타일링 2) -DP
2023. 3. 27. 22:06ㆍALGORITHM/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 직사각형을 채운 한가지 예이다.
![](https://blog.kakaocdn.net/dn/d6FK3Y/btr5C5hyUlN/nl67eXkyBND6QNPgbrv9M0/img.gif)
입력
첫째 줄에 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
반응형
'ALGORITHM > Swift' 카테고리의 다른 글
[알고리즘] Swift -프로그래머스 연습문제 #172928(공원 산책) (0) | 2023.04.02 |
---|---|
[알고리즘] Swift -프로그래머스 연습문제 #176963(추억 점수) (0) | 2023.04.01 |
[알고리즘] Swift -백준 #2193(이친수) -DP (0) | 2023.03.23 |
[알고리즘] Swift -백준 #2579(계단 오르기) -DP (0) | 2023.03.23 |
[알고리즘] Swift -백준 #9095(1, 2, 3 더하기) (0) | 2023.03.22 |