์ƒˆ์†Œ์‹

IN DEPTH CAKE/Supercoder

[์ฝ”๋”ฉ/LeetCode150-(10)] 45. Jump Game II

  • -
๋ฐ˜์‘ํ˜•
๋ณธ ๊ธ€์€ LeetCode Top Interview 150์— ์ •๋ฆฌ๋œ ๋ฌธ์ œ๋ฅผ ์š”์•ฝํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ํ’€์ด๋ฅผ ํฌํ•จํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ณธ ํฌ์ŠคํŒ… ์‹œ๋ฆฌ์ฆˆ๋Š” 150 list์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ์„œ ๊ฒŒ์žฌ๋ฉ๋‹ˆ๋‹ค. ํ’€์ด ์–ธ์–ด๋Š” python3์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

 

 

๋‚œ์ด๋„Medium

ํ‚ค์›Œ๋“œ: Array, DP

 

๋ฌธ์ œ

 

๋ฌธ์ œ ์›๋ฌธ: https://leetcode.com/problems/jump-game-ii/?envType=study-plan-v2&envId=top-interview-150 

 

์ •์ˆ˜ํ˜• ๋ฐฐ์—ด nums๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ•˜์ž. ๋‹น์‹ ์€ ์ฒ˜์Œ์— ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ index์— ์œ„์น˜ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๋Š” ํ•ด๋‹น ์œ„์น˜์—์„œ๋ถ€ํ„ฐ ๋‹น์‹ ์ด ์ตœ๋Œ€๋กœ ์ ํ”„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ๋•Œ, ๋งˆ์ง€๋ง‰ index ์— ๋„๋‹ฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ jump ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด๋ผ.

 

* ํ•ญ์ƒ nums[n-1]์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ

Input: nums = [2,3,1,1,4]
Output: 2
Explanation: The minimum number of jumps to reach the last index is 2. Jump 1 step from index 0 to 1, then 3 steps to the last index.

 

ํ’€์ด

Jump Game (55) ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ๋ฌธ์ œ์ด๋‹ค. ๋‹ค๋งŒ, ์ด ๋•Œ ํ•„์š”ํ•œ ์ตœ์†Ÿ๊ฐ’์„ ๋ฌป๋Š” ๋ฌธ์ œ์ด๋ฏ€๋กœ, DP ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ์‹๋งŒ ์ˆ˜์ •ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ฃผ์—ˆ๋‹ค.

 

class Solution:
    def jump(self, nums: List[int]) -> int:

        N = len(nums)

        # Initialize
        dp = [float("inf")] * N
        dp[-1] = 0

        for i in range(len(nums)-2,-1,-1):
            for j in range(i+1, min(i+nums[i]+1, N)):
                dp[i] = min(dp[i], 1 + dp[j])
        
        return dp[0]

 

 

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

# ๋กœ๋”ฉ ํ™”๋ฉด ๋™์ž‘ ์ฝ”๋“œ(Code) ์„ค์ •ํ•˜๊ธฐ