문제
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
풀이
문제를 보고 일단 타일의 모습을 그려보기로 했다.
n의 타일은 n - 1 의 타일에 세로 타일이 하나씩 추가된 모습과, n - 2의 타일에 가로 타일 두개씩 추가된 모습이다, 이를 점화식으로 나타내면 dp[n] = dp[n - 1] + dp[n - 2] 이다. 이 점화식을 이용해 문제를 해결하면 된다.
코드
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val mod = 10007
val num = br.readLine().toInt()
val dp = IntArray(1001)
dp[1] = 1
dp[2] = 2
for(i in 3 .. num) {
dp[i] = (dp[i - 1] + dp[i - 2]) % mod
}
bw.write("${dp[num]}")
bw.flush()
bw.close()
br.close()
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 7568번: 덩치 - Kotlin[코틀린] (0) | 2023.07.21 |
---|---|
[백준] 1920번: 수 찾기 - Kotlin[코틀린] (0) | 2023.07.20 |
[백준] 1181번: 단어 정렬 - Kotlin[코틀린] (0) | 2023.07.19 |
[백준] 1003번: 피보나치 함수 - Kotlin[코틀린] (0) | 2023.07.19 |
[백준] 1929번: 소수 구하기 - Kotlin[코틀린] (0) | 2023.07.18 |