판다꼬마 2022. 7. 12. 23:40
728x90

문제

 

입력

  • 첫째 줄에 식량창고의 개수 N이 주어진다.(3<=N<=100)
  • 둘째 줄에 공백으로 구분되어 각 식량창고에 저장된 식량의 개수 K가 주어진다 (0<=K<=1000)

 

출력

첫째 줄에 개미 전사가 얻을 수 있는 식량의 최댓값을 출력하시오

 

입력 예시

4
1 3 1 5

출력 예시

8

풀이 방법

어캐 풀었니

내 코드

n=int(input())

k=list(map(int,input().split()))

d=[0 for _ in range(n+1)]


d[0]=k[0]

d[1]=max(k[0],k[1])


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

Solution

# 정수 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])

느낌점

어떻게 구현하지라는 생각을 많이 했다.

문제를 처음 접근할때 많은 시간이 들어 나중에 다시 한번 풀어봐야겠다.

728x90