판다꼬마
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