백준 2579 계단오르기 파이썬
접근방식
- dp 리스트에 1번 계단과 2번 계단을 저장한다.
- max 함수를 이용해서 자기 자신과 2계단 아래의 값, 그리고 자기 자신과 바로 이전 계단의 값을
비교한다. - 모든 계산 뒤에 steps[i]를 더해준다.
# 입력받기
import sys
input = lambda: sys.stdin.readline().rstrip()
n = int(input())
steps = [0] + list(map(int, (input() for _ in range(n))))
dp = [0 for _ in range(301)]
dp[1] = steps[1]
dp[2] = dp[1] + steps[2]
for i in range(3, n+1):
dp[i] = max(dp[i-2], dp[i-3] + steps[i-1]) + steps[i]
print(dp[n])
해당 문제는 실버3레벨에 해당하므로 어렵지 않게 풀 수 있는 문제였습니다.
DP 알고리즘을 처음 접하기에 적합한 문제라고 생각합니다.
알고리즘도 모든 것과 마찬가지로 꾸준한 연습과 이해를 바탕으로 실력이 향상합니다. Just do it & Keep steady
댓글남기기