티스토리 뷰
programmers.co.kr/learn/courses/30/lessons/42897
첫번째 집을 터는 경우에 마지막 집은 인접한 경우이기 때문에 털 수 없고,
마찬가지로 마지막 집을 터는 경우 첫번째 집을 털 수 없기 때문에 두 경우로 나눠서 계산
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
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 크레인 인형뽑기 게임 - Python (0) | 2021.03.24 |
---|---|
[프로그래머스] 정수 삼각형 - Python (0) | 2021.03.12 |
[프로그래머스] 베스트앨범 - Python (0) | 2021.03.03 |
[프로그래머스] 체육복 - Python (0) | 2021.02.28 |
[프로그래머스] K번째수 - Python (0) | 2021.02.27 |