Skip to content

Commit

Permalink
[level 4] Title: 도둑질, Time: 546.33 ms, Memory: 88.3 MB -BaekjoonHub
Browse files Browse the repository at this point in the history
  • Loading branch information
skmn3 committed Mar 28, 2023
1 parent eaa9b8b commit 7b6106d
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 0 deletions.
48 changes: 48 additions & 0 deletions 프로그래머스/lv4/42897. 도둑질/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# [level 4] 도둑질 - 42897

[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42897?language=python3)

### 성능 요약

메모리: 88.3 MB, 시간: 546.33 ms

### 구분

코딩테스트 연습 > 동적계획법(Dynamic Programming)

### 채점결과

<br/>정확성: 50.0<br/>효율성: 50.0<br/>합계: 100.0 / 100.0

### 문제 설명

<p>도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. </p>

<p><img src="https://grepp-programmers.s3.amazonaws.com/files/ybm/e7dd4f51c3/a228c73d-1cbe-4d59-bb5d-833fd18d3382.png" title="" alt="image.png"></p>

<p>각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다.</p>

<p>각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요.</p>

<h5>제한사항</h5>

<ul>
<li>이 마을에 있는 집은 3개 이상 1,000,000개 이하입니다.</li>
<li>money 배열의 각 원소는 0 이상 1,000 이하인 정수입니다.</li>
</ul>

<h5>입출력 예</h5>
<table class="table">
<thead><tr>
<th>money</th>
<th>return</th>
</tr>
</thead>
<tbody><tr>
<td>[1, 2, 3, 1]</td>
<td>4</td>
</tr>
</tbody>
</table>

> 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
14 changes: 14 additions & 0 deletions 프로그래머스/lv4/42897. 도둑질/도둑질.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
def solution(money):
dyp1 = [0] * len(money)
dyp2 = [0] * len(money)
dyp1[0] = money[0]

for i in range(1, len(money) - 1):
dyp1[i] = max(dyp1[i - 1], dyp1[i - 2] + money[i])

dyp1[0] = 0
for i in range(1, len(money)):
dyp2[i] = max(dyp2[i - 1], dyp2[i - 2] + money[i])

return max(dyp1[-2], dyp2[-1])

0 comments on commit 7b6106d

Please sign in to comment.