일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 | 29 | 30 |
Tags
- Python Implementation
- 315. Count of Smaller Numbers After Self
- Decorator
- kaggle
- 밴픽
- 109. Convert Sorted List to Binary Search Tree
- Class
- 시바견
- 30. Substring with Concatenation of All Words
- 프로그래머스
- data science
- Convert Sorted List to Binary Search Tree
- 파이썬
- Python
- LeetCode
- attribute
- Python Code
- 운영체제
- Substring with Concatenation of All Words
- 715. Range Module
- Generator
- Protocol
- DWG
- 43. Multiply Strings
- concurrency
- t1
- iterator
- shiba
- Regular Expression
- 컴퓨터의 구조
Archives
- Today
- Total
Scribbling
프로그래머스: 도둑질 본문
연이은 값을 선택할 수 없는 문제는 전형적인 DP 문제로 많이 접해보았을 것이다.
다만 이 문제는 첫 번째 값과 마지막 값을 동시에 선택할 수 없다는 조건이 추가되어있다.
이에 따라, 첫 번째 값을 선택가능한 case와 마지막 값을 선택 가능한 case로 나누어 그 중 최댓값을 return한다.
1) 0th idx ~ (n-1)th idx
2) 1th idx ~ (n)th idx
def solution(money):
dp1 = [0] * (len(money) - 1)
dp1[0] = money[0]
dp1[1] = max(money[0], money[1])
for i in range(2, len(money)-1):
dp1[i] = max(dp1[i-2]+money[i], dp1[i-1])
dp2 = [0] * len(money)
dp2[0] = 0
dp2[1] = money[1]
for i in range(2, len(money)):
dp2[i] = max(dp2[i-2]+money[i], dp2[i-1])
return max(dp1[-1], dp2[-1])
'Computer Science > Coding Test' 카테고리의 다른 글
LeetCode: 113. Path Sum II (0) | 2021.10.27 |
---|---|
LeetCode: 109. Convert Sorted List to Binary Search Tree (0) | 2021.10.27 |
프로그래머스: 등굣길 (0) | 2021.10.26 |
프로그래머스: 정수 삼각형 (0) | 2021.10.26 |
프로그래머스: N으로 표현 (0) | 2021.10.25 |