티스토리 뷰

코딩테스트

개미 전사

ajaa 2024. 10. 30. 09:51

📌문제

개미 전사는 메뚜기 마을의 식량창고를 공격하려고 한다. 메뚜기 마을에는 여러 개의 식량 창고가 있고 일직선으로 이어져있다. 개미 전사는 식량 창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다. 메뚜기 정찰병들은 일직선상에 존재하는 식량 창고 중 서로 인접한 식량 창고가 공격받으면 바로 알 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 

개미 전사를 위해 식량창고 N개에 대한 정보가 주어졌을 때 얻을 수 있는 식량의 최댓값을 구하는 프로그램을 작성하시오.

 

📌풀이

1. (i-1)번째 식량창고를 턴다면 현재의 식량창고를 털 수 없다.

2. (i-2)번째 식량창고를 턴다면 현재의 식량창고를 털 수 있다.

1과 2 중에서 더 많은 식량을 털 수 있는 경우 선택

 

i번째 식량창고에 대한 최적의 해를 구할 때 (i-3)번째 이하의 식량창고에 대한 최적의 해는 고려할 필요 없음

d[i-3]은 d[i-1]과 d[i-2]를 구하는 과정에서 이미 고려되었기 때문에 d[i]를 구할 때는 d[i-1]과 d[i-2]만 고려하면 됨

 

📌코드

n = int(input())
# 모든 식량창고 정보
array = list(map(int, input().split()))

# 앞서 계산된 결과 저장하기 위한 DP 테이블 초기화
d = [0] * 100

# 다이나믹 프로그래밍 진행(보텀업)
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])

 

 

📌참고

https://g.co/kgs/eyd5SSd

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.google.com

 

 

'코딩테스트' 카테고리의 다른 글

효율적인 화폐 구성  (1) 2024.11.01
바닥 공사  (3) 2024.10.31
1로 만들기  (0) 2024.10.29
다이내믹 프로그래밍  (5) 2024.10.28
떡볶이 떡 만들기  (0) 2024.10.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함