[Swift]BOJ-11726

BOJ-11726, 2xn 타일링

문제 📑

https://www.acmicpc.net/problem/11726

 

11726번: 2×n 타일링

2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.

www.acmicpc.net

문제 정리 ▾

BOJ-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