Algorithm

[Swift 백준] 2193 이친수

Kim Roks 2025. 2. 1. 20:41

 

풀이 아이디어

dp 문제입니다.

공통된 점화식을 찾아야합니다.

조건에 의하면 이친수는

 

  • 무조건 1로 시작
  • 11의 부분 문자열이 없어야함

입니다. 

 

n = 1 인 경우 [1] 으로 1개

n = 2 인 경우 [10] 으로 1개

n= 3 인 경우 [100, 101] 으로 2개

n = 4 인 경우 [1000, 1001, 1010] 으로 3개 입니다.

 

정확히 피보나치수와 같은 점화식을 갖고 있음을 알 수 있습니다.

 

 

풀이

let n = Int(readLine()!)!
var dp = Array(repeating: 0, count: 91)

dp[1] = 1
dp[2] = 1
dp[3] = 2

if n >= 4{
    for i in 4...n {
        dp[i] = dp[i-2] + dp[i-1]
    }
    print(dp[n])
} else {
    print(dp[n])
}