일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 링피트
- 영어공부
- 쓰릴오브파이트
- 30분
- 뭐든
- Daily Challenge
- 월간
- 잡생각
- 개발자
- 3줄정리
- English
- 괜찮음
- FIT XR
- 사이드
- Problem Solving
- 프로젝트
- 읽기
- 파비최
- leetcode
- realclass
- 만화도
- 화상영어
- 미드시청
- 매일
- 리얼 클래스
- 영어원서읽기
- 운동
- Writing
- 10분
- 스탭퍼
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