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