쥐수의 공부노트

백준 2579번 계단 오르기 본문

바킹독 알고리즘/다이나믹 프로그래밍

백준 2579번 계단 오르기

쥐수 2023. 6. 3. 17:55
728x90

 

정답 :

let n = Int(readLine()!)!
var stairs = [Int]()
var dp = Array(repeating: 0, count: n+1)

for _ in 0..<n {
    let input = Int(readLine()!)!
    stairs.append(input)
}

dp[1] = stairs[0]
if n >= 2 {
    dp[2] = stairs[0] + stairs[1]
}

for i in 3...n {
    dp[i] = max(dp[i-2], dp[i-3] + stairs[i-2]) + stairs[i-1]
}

print(dp[n])
더보기
TMI : 코드블럭을 사용해서 올리는 방법을 알게 되었다.. 할 줄 몰라서 스크린샷만 사용했는데.. 앞으로는 코드블럭을 애용하자!

 

문제에 대해서 2차원 배열을 사용하는 방법과 1차원 배열을 사용하는 방법을 진행했지만, 내가 코드를 잘못 옮긴건지, 자꾸 오답이 나왔다.

 

그래서 아쉽게도 바킹독 님의 코드를 가져오진 못했다!

728x90