일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 미드시청
- 뭐든
- Daily Challenge
- Problem Solving
- 매일
- 영어원서읽기
- Writing
- 읽기
- 월간
- 잡생각
- leetcode
- English
- FIT XR
- 만화도
- realclass
- 스탭퍼
- 링피트
- 운동
- 3줄정리
- 리얼 클래스
- 30분
- 개발자
- 프로젝트
- 파비최
- 쓰릴오브파이트
- 사이드
- 영어공부
- 괜찮음
- 10분
- 화상영어
Archives
- Today
- Total
파비의 매일매일 공부기록
Today's Challenge 본문
https://leetcode.com/problems/jump-game-vi/
Jump Game VI - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
전형적인 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