Written by
최태열
on
on
[Python][프로그래머스][Level4] 도둑질
[Python][프로그래머스][Level4] 도둑질
코드
def solution(money):
if len(money)<=3:
return max(money)
#첫집 o
answer1=[0]*len(money)
answer1[0]=money[0]
answer1[1]=money[1]
answer1[2]=money[0]+money[2]
for num in range(3,len(money)-1):
answer1[num]=money[num]+max(answer1[num-2],answer1[num-3])
#첫집 x
answer2=[0]*len(money)
answer2[1]=money[1]
answer2[2]=money[2]
for num in range(3,len(money)):
answer2[num]=money[num]+max(answer2[num-2],answer2[num-3])
return max(max(answer1),max(answer2))
dp로 풀었다.
원형의 구조에서 직선의 구조로 바꿔주기 위해사
두 가지 경우로 나눴다.
첫집을 도둑질 하는 경우와 아닌 경우이다.
두 가지 경우에 대한 dp를 구하고 그 중 큰 값을 반환한다.
Discussion and feedback