문제
배열의 맨 처음 인덱스 부터 시작하여 현재 위치한 인덱스와 해당 인덱스의 값을 더한 합이 최대로 점프할수 있는 양이라고 했을때, 배열의 마지막까지 도달할 수 있는지를 판단하는 문제입니다. 배열 한칸 이동시마다 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
'자료구조,알고리즘' 카테고리의 다른 글
LeetCode-125 Valid Palindrome 파이썬 풀이 (0) | 2023.08.29 |
---|---|
LeetCode-122 Best time to sell stock2 파이썬 풀이 (0) | 2023.08.25 |
LeetCode-88 Merge sort array (0) | 2023.08.25 |
LeetCode-151 Reverse Words in a String 파이썬 풀 (0) | 2023.08.25 |
LeetCode-121 Best Time to Buy and Sell Stock 파이썬 문제 풀이 (0) | 2023.08.24 |