반응형
https://www.acmicpc.net/problem/2579
2579번: 계단 오르기
계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. <그림 1>과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점
www.acmicpc.net
fun main() {
val n = readLine()!!.toInt()
val arr = IntArray(n+1) { 0 }
val dp = Array(n+1) { IntArray(3) { 0 } }
for (i in 1 until n+1) {
arr[i] = readLine()!!.toInt()
}
dp[1][1] = arr[1]
for (i in 2 until n + 1) {
dp[i][1] = max(dp[i-2][1], dp[i-2][2]) + arr[i]
dp[i][2] = dp[i-1][1] + arr[i]
}
val answer = max(dp[n][1], dp[n][2])
println(answer)
}
점화식 접근 방법으로는
계단을 오르기 위해서는 연속 3회이상 계단을 밟을 수 없기에
이전 계단을 밟거나 밟지 않고 2칸 점프해서 오는 두가지 경우밖에 없다.
이전 계단을 밟았을 경우에는 이전 경우에 수에 현재 계단의 값을 더해주면 되고
2칸을 점프 하여 현재 계단을 밟았을 경우에는 이전 경우의 수(연속으로 밟았거나 한번만 밟았거나) 중 최댑값에 현재 값을 더해주면 된다.
반응형
'알고리즘' 카테고리의 다른 글
백준 5582번 공통 부분 문자열 코틀린 (0) | 2022.05.19 |
---|---|
백준 1915 코틀린 (0) | 2022.04.17 |
백준 1005 코틀린 (0) | 2021.08.14 |
백준 1202 코틀린 (0) | 2021.06.15 |
백준 1043 코틀린 (0) | 2021.06.13 |