BOJ-11726, 2xn 타일링
문제 📑
https://www.acmicpc.net/problem/11726
문제 정리 ▾
- 크기가 2 * n의 직사각형을 위한 n의 정수 입력을 받는다.
- 입력받은 크기를 2*1 && 2*2 크기의 타일로 만들 수 있는 방법의 수를 10,007로 나눈 나머지를 출력한다.
접근 🚶🏻
나의 생각 ▾
- 노트에 하나하나 케이스를 그려보면서 규칙을 찾아보았다.
- DP 문제이기 때문에 규칙만 찾으면 구현하는 건 어려움이 없다고 생각했다.
- 노트에 적어보며 찾은 규칙은 dp[n] = dp[n-1] + dp[n-2] 이었다.
내 코드 ▾
func solution() {
let cnt = Int(readLine()!)!
var dp = Array(repeating: 0, count: cnt+2)
dp[0] = 1
dp[1] = 1
for i in 2..<cnt + 1 {
dp[i] = (dp[i-1] + dp[i-2]) % 10007
}
print(dp[cnt])
}
solution()
- 리뷰라고 하기엔 쉬운 코드이다.
- 2 * cnt의 크기를 위해 dp라는 배열 변수를 0으로 채운 뒤, for문을 이용해 하나하나 채워나가고, 해당 인덱스의 값을 출력해주면 끝!!
Additional 📂
- 보는 것처럼 크게 어렵지 않은 문제이다.
- 당분간 DP 문제를 풀어보려고 한다. DP는 재밌다. 😀
'Algorithm.zip' 카테고리의 다른 글
[Swift]BOJ-1946 (0) | 2022.04.06 |
---|---|
[Swift]BOJ-1026 (0) | 2022.04.04 |
[Swift]BOJ-17298 (0) | 2022.02.05 |
[Swift]BOJ-10799 (0) | 2022.02.04 |
[Swift]BOJ-17413 (0) | 2022.02.03 |