728x90
https://www.acmicpc.net/problem/2193
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않
www.acmicpc.net
dp [1][i] = i자리가 1인 경우
dp[0][i] = i자리가 0인 경우
1 2 3 4 5 6
-----------------
0 | 0 1 1 2 3 5
1 | 1 0 1 1 2 3
개수를 세보면서 진행하면 규칙이 보인다!
dp[1][i]는 dp[0][i-1]의 값과 동일하고
dp[0][i]는 dp[0][i-1] + dp[1][i-1] 값이다!
//input
let n = Int(readLine()!)!
var dp = [[Int]](repeating: [Int](repeating: 0, count: n+2), count: 2)
dp[1][1] = 1
dp[0][1] = 0
if n > 1 {
for i in 2...n {
dp[0][i] = dp[0][i-1] + dp[1][i-1]
dp[1][i] = dp[0][i-1]
}
}
print(dp[0][n] + dp[1][n])
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Swift] 12100번: 2048 (easy) (1) | 2023.03.12 |
---|---|
[백준/Swift] 10844번: 쉬운 계단 수 (0) | 2023.03.12 |
[백준/Swift] 9465번: 스티커 (0) | 2023.03.12 |
[백준/Swift] 1699번: 제곱수의 합 (0) | 2023.03.12 |
[백준/Swift] 11051번: 이항 계수 2 (1) | 2023.03.09 |