본문 바로가기

프로그래밍/문제

프로그래머스 도둑질 (DP)

반응형

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

 

코딩테스트 연습 - 도둑질

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

programmers.co.kr

DP문제이다.

 

인접한 집을 털게되면 경보음이 울게된다.

 

그래서 한집 띄어서 도둑이 털게 만들어야 한다.

 

현재 집의 돈의 금액과 [i-2]위치의 금액과의 합과 [i-1]에서의 도둑이 털수 있는 금액의 합을 비교해서 큰값을 가지면 된다.

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
def solution(money):
    
    if len(money) == 3:
        return max(money[0] , money[1] , money[2])
    
    dp1 = [0* len(money)
    dp2 = [0* len(money)
    
    dp1[0= money[0]
    dp1[1= max(money[0] , money[1])
    
    
    for i in range(2 , len(money)-1):
        dp1[i] = max(dp1[i-1] , money[i] + dp1[i-2])
    
    
    dp2[0= 0
    dp2[1= money[1]
    for i in range(2 , len(money)):
        dp2[i] = max(dp2[i-1] , money[i] + dp2[i-2])
        
        
    
    
    answer = max(max(dp1) , max(dp2))
    return answer
cs

 

 

반응형

'프로그래밍 > 문제' 카테고리의 다른 글

BOJ - 회의실배정  (0) 2020.09.28
BOJ - 최솟값 ( 세그먼트트리)  (0) 2020.09.24
백준 1 2 3 더하기 (dp)  (0) 2017.02.10
바이러스  (0) 2017.01.02
단지번호 붙이기  (0) 2017.01.02