https://www.acmicpc.net/problem/2579
계단의 점화식 문제.
특정 계단에서 얻을 수 있는 점수는 다음과 같다.
- n-1, n 이렇게 연속적으로 접근
- n-2, n 이렇게 떨어져서 접근
따라서 다음과 같은 점화식이 세워짐
- dp[i-3]+stair[i-1]+stait[i] (연속적으로 계단에 접근한 경우)
- dp[i-2]+stair[i] (비연속적으로 계단에 접근한 경우)
import Foundation
let n = Int(readLine()!)!
var stairtArr: [Int] = []
for _ in 0..<n {
let input = Int(readLine()!)!
stairtArr.append(input)
}
var dp: [Int] = Array(repeating: 0, count: n)
if n == 1 {
print(stairtArr[0])
} else if n==2 {
print(stairtArr[0]+stairtArr[1])
} else {
dp[0] = stairtArr[0]
dp[1] = stairtArr[0]+stairtArr[1]
dp[2] = max(stairtArr[0]+stairtArr[2], stairtArr[1]+stairtArr[2])
for i in 3..<n {
dp[i] = max(dp[i-2]+stairtArr[i], dp[i-3]+stairtArr[i-1]+stairtArr[i])
}
print(dp[n-1])
}
'Algorithm > 백준' 카테고리의 다른 글
Swift) 백준 2805번 나무 자르기 - S2 (0) | 2024.05.26 |
---|---|
Swift) 백준 1697번 숨바꼭질 - S1 (0) | 2024.05.19 |
Swift) 백준 1005번 ACM Craft - G3 (0) | 2024.04.13 |
Swift) 백준 17609번 회문 - G5 (1) | 2024.03.25 |
Swift) 백준 3055번 탈출 - G4 (0) | 2024.03.20 |