문제
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 |