본문 바로가기

자료구조,알고리즘

LeetCode-55 Jump Game 88 파이썬 풀이

문제

배열의 맨 처음 인덱스 부터 시작하여 현재 위치한 인덱스와 해당 인덱스의 값을 더한 합이 최대로 점프할수 있는 양이라고 했을때, 배열의 마지막까지 도달할 수 있는지를 판단하는 문제입니다. 배열 한칸 이동시마다 1씩 소모 됩니다.

풀이

배열을 하나씩 순회하면서 해당 요소의 인덱스와 값을 더한 합이 현재 저장되어있는 count보다 크다면 해당 합을 저장합니다. 이때 i가 count에 저장되어 있는 값 보다 크다면 i까지 이동할 수 없기때문에 false를 반환합니다. 반대로 count가 배열의 마지막 인덱스보다 커진다면 배열의 끝까지 도달할 수 있기때문에 true를 반환합니다.

class Solution:
    def canJump(self, nums: List[int]) -> bool:
        count = nums[0]
        for i, num in enumerate(nums):
            if i > count:
                return False
            count = max(count, i + num)
            if count >= len(nums) - 1:
                return True
        return True