5_hyun 2022. 6. 21. 23:03
반응형

 

교재 풀이

이렇게 바로 옆을 털면 지금 창고를 털지 못한다. 그리고 2번 떨어진 창고를 털면 지금 창고를 털 수 있다.

따라서 바로 옆 창고 vs (옆옆 창고 + 현재 창고) 이렇게 비교해서 더 큰 값을 찾아야 한다.

 

n = int(input())
ary = list(map(int, input().split()))

d = [0] * 100

d[0] = ary[0]
d[1] = max(ary[0], ary[1])
for i in range(2, n):
    d[i] = max(d[i-1], d[i - 2] + ary[i])

print(d[n-1])

이런 풀이가 나온다. 위에서 설명했듯이 옆 창고 vs (옆옆 창고 + 현재 창고)를 비교하면서 푸는 문제이다.

이 문제를 다시 풀면서 for문 안에 max에서 (옆옆 창고 + 현재 창고)에서 현재 창고는 ary로 사용을 해야한다는 점을 주의해야 한다.

반응형