728x90
반응형
개미 전사
난이도 : 中 풀이 시간 : 30분
시간 제한 : 1초 메모리 제한 : 128 MB
해답
n = int(input())
array = list(map(int, input().split()))
d = [0] * 100
d[0] = array[0]
d[1] = max(d[0], array[1])
for i in range(2, n):
d[i] = max(d[i-1], d[i-2] + array[i])
print(d[n-1])
예시
# 정수 N을 입력 받기
n = int(input())
# 모든 식량 정보 입력 받기
array = list(map(int, input().split()))
# 앞서 계산된 결과를 저장하기 위한 DP 테이블 초기화
d = [0] * 100
# 다이나믹 프로그래밍(Dynamic Programming) 진행 (보텀업)
d[0] = array[0]
d[1] = max(array[0], array[1])
for i in range(2, n):
d[i] = max(d[i - 1], d[i - 2] + array[i])
# 계산된 결과 출력
print(d[n - 1])
해설
왼쪽부터 차례대로 식량 창고를 턴다고 가정하면 점화식을 세울 수 있습니다.
dp 테이블을 만들어 주고, d[i]에 대해서 d[i-1]과 d[i-2]와 array[i]를 더한 값을 대입해줍니다.
728x90
반응형
'알고리즘 (Python) > 이것이 코딩 테스트다 with 파이썬' 카테고리의 다른 글
[다이나믹 프로그래밍] 효율적인 화폐 구성 - 파이썬(python) (0) | 2021.07.13 |
---|---|
[다이나믹 프로그래밍] 바닥 공사 - 파이썬(python) (0) | 2021.07.13 |
[다이나믹 프로그래밍] 1로 만들기 - 파이썬(python) (0) | 2021.07.08 |
[다이나믹 프로그래밍] 다이나믹 프로그래밍 (0) | 2021.07.07 |
[이진 탐색 알고리즘] 떡볶이 떡 만들기 - 파이썬(python) (0) | 2021.07.06 |