앞선 Jump Game 과 다른 점은 reach 를 계속 업데이트 하지 않고 후보군을 끝까지 탐색 후 jump++ 와 reach 변수 재지정이 이루어지는 것이다. 그렇게 뜨문 뜨문 갱신되는 reach 내에서 loop를 반복적으로 돌아준다.
class Solution:
def jump(self, nums: list[int]) -> int:
pointer = 0
reach = nums[pointer]
jump = 0
if len(nums) == 1:
return 0
while True:
if reach + 1 >= len(nums):
return jump + 1
temp = reach
while pointer < reach:
pointer += 1
if pointer + nums[pointer] > temp:
temp = pointer + nums[pointer]
reach = temp
jump += 1