[ 접근 방법 ]
리스트를 통해 인자값을 받은 후 bottom up 방식으로 최대로 강탈하는 식량을 찾아내가면 될 것 같다.
강탈하는 방법은 n 번째 식량 창고의 경우 식량(n-1)이 더 큰지, 아니면 식량(n-2 + n) 이 더큰지 확인하여 갱신해 나가면 될것으로 보인다.
[ 작성 코드 ]
# 3 <= n <= 100
n = int(input())
storage = list(map(int,input().split()))
storage[1] = max(storage[0], storage[1])
for i in range(2, n):
storage[i] = max( (storage[i]+storage[i-2]) , storage[i-1])
print(storage[n-1])
[ 정답 코드와 비교 ]
생각보다 예전에 풀었던 기억 때문인지 쉽게 풀 수 있었다. 정답코드와 차이점은 새로운 리스트를 선언하여 리스트 변수를 두개를 썼는가 정도였다.
가독성을 위해서는 정답 코드가 나쁘진 않다 생각하지만 문제 풀이를 위해서는 딱히 상관이 없어 보였다.
'코딩 테스트 > 이취코테' 카테고리의 다른 글
Ch8.다이나믹 프로그래밍 - 효율적인 화폐 구성 (0) | 2023.03.10 |
---|---|
Ch8.다이나믹 프로그래밍 - 바닥 공사 (0) | 2023.03.10 |
Ch8.다이나믹 프로그래밍 - 1로 만들기 (0) | 2023.03.08 |
Ch7.이진 탐색 - 떡볶이 떡 만들기 (0) | 2023.03.07 |
Ch7.이진 탐색 - 부품 찾기 (0) | 2023.03.07 |