동캄의 코딩도장

프로그래머스 level4 [도둑질] 파이썬 본문

코테/프로그래머스

프로그래머스 level4 [도둑질] 파이썬

동 캄 2022. 1. 10. 22:26

https://programmers.co.kr/learn/courses/30/lessons/42897

 

코딩테스트 연습 - 도둑질

도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한

programmers.co.kr

#프로그래머스 도둑질
def solution(money):
    answer = 0
    dp=[0]*(len(money))
    dp[0]=money[0]
    dp[1]=money[1]
    dp[2]=money[2]+money[0]
    for i in range(3,len(money)-1):
        dp[i]=money[i]+max(dp[i-2],dp[i-3])
    answer=max(dp)
    dp=[0]*(len(money))
    dp[1]=money[1]
    dp[2]=money[2]
    for i in range(3,len(money)):
        dp[i]=money[i]+max(dp[i-2],dp[i-3])
    answer=max(max(dp),answer)
    return answer

처음에 순환하는 것을 어떻게 처리해야 할지 막막해서 잘 못풀었었다. 

생각해보니 맨 끝 점과 맨 처음 점 둘 중 하나를 제외하는 경우를 생각해보면, 원형일때도 겹치지 않고 dp로 해결 할 수 있다.