일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 괜찮음
- 10분
- 리얼 클래스
- 프로젝트
- Problem Solving
- realclass
- 스탭퍼
- 영어원서읽기
- English
- Daily Challenge
- 운동
- 매일
- 잡생각
- 월간
- leetcode
- 뭐든
- 영어공부
- 3줄정리
- 사이드
- 쓰릴오브파이트
- 파비최
- 30분
- 만화도
- 읽기
- Writing
- 링피트
- 미드시청
- 화상영어
- FIT XR
- 개발자
Archives
- Today
- Total
파비의 매일매일 공부기록
Today's Challenge 본문
https://leetcode.com/problems/jump-game-vi/
전형적인 DP 문제면서 내가 잘 못 푸는 유형중에 하나.
파이썬으로 작성된 솔루션은 거의 deque나 priority queue를 활용함.
priority queue로 작성된 코드는 짧으나 조금 이해가 안가서 deque로 작성된 코드 보고 제출.
결국은 이것도 난이도의(혹은 숙련도의) 문제지, 하라는 대로 코드를 짜면 되긴 함.
class Solution:
def maxResult(self, nums: List[int], k: int) -> int:
n = len(nums)
q, dp = deque(), [0] * n
for i, e in enumerate(nums):
dp[i] = e + (dp[q[0]] if q else 0)
while q and dp[q[-1]] <= dp[i]:
q.pop()
q.append(i)
if i == q[0] + k:
q.popleft()
return dp[-1]
반응형
'Problem Solving > LeetCode' 카테고리의 다른 글
Today's Challenge (0) | 2022.07.11 |
---|---|
Today's Challenge (0) | 2022.07.10 |
Today's Challenge (0) | 2022.07.08 |
Today's Challenge (0) | 2022.07.07 |
Today's Challenge (0) | 2022.07.06 |
Comments