Algorithm/Programmers
[프로그래머스] 도둑질 - Python
Dev.sohee
2021. 3. 12. 20:06
programmers.co.kr/learn/courses/30/lessons/42897
코딩테스트 연습 - 도둑질
도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한
programmers.co.kr
첫번째 집을 터는 경우에 마지막 집은 인접한 경우이기 때문에 털 수 없고,
마찬가지로 마지막 집을 터는 경우 첫번째 집을 털 수 없기 때문에 두 경우로 나눠서 계산
def solution(money):
answer = 0
length = len(money)
dp = [0] * length
# 첫번째 집을 털고, 마지막 집은 안 터는 경우
dp[0] = money[0]
dp[1] = max(money[0], money[1])
for i in range(2, length-1):
dp[i] = max(dp[i-2] + money[i], dp[i-1])
answer = max(dp)
# 첫번째 집은 안 털고, 마지막 집을 터는 경우
dp[0] = 0
dp[1] = money[1]
for i in range(2, length):
dp[i] = max(dp[i-2] + money[i], dp[i-1])
answer = max(answer, max(dp))
return answer