[LeetCode]Jump Game II

2023. 5. 7. 21:02·SW개발/코딩테스트

https://leetcode.com/problems/jump-game-ii/description/

 

Jump Game II - LeetCode

Can you solve this real interview question? Jump Game II - You are given a 0-indexed array of integers nums of length n. You are initially positioned at nums[0]. Each element nums[i] represents the maximum length of a forward jump from index i. In other wo

leetcode.com

 

문제 분석

nums 리스트에는 한번에 점프할 수 있는 최대의 값이 들어 있습니다. 목적지에 도달하기 위해 점프를 가장 적게하는 횟수를 구하는 문제입니다.

 

처음 시도한 답안

class Solution:
    def jump(self, nums: List[int]) -> int:
        count = 0
        # 현재 구간에서 1번의 점프만으로 도달 가능한 가장 먼 위치
        curr_jump_max = 0
        # 현재 구간에서 도달 가능한 가장 먼 위치
        next_jump_max = 0

        for idx in range(len(nums)-1):
            # 각 구간에서 도달 가능한 가장 먼 위치를 추적하고 갱신합니다.
            next_jump_max = max(nums[idx] + idx, next_jump_max)

            # 현재 구간 == 도달 가능한 가장 먼 위치에 도착한 경우, 점프합니다.
            # 즉, 점프를 해야만 하는 경우
            if idx == curr_jump_max:
                # 단, idx 0번째의 경우 바로 카운트가 1회 증가함
                count += 1
                # 현재 구간의 위치를 점프한 곳으로 초기화 합니다.
                curr_jump_max = next_jump_max

        return count

# [2,3,1,1,4]
#  0,1,2,3,4
# next_jump_max
# [2,4,4,4,]
# curr_jump_max
# [2,2,4,]

접근 방법

  1. 현재 구간에서 가장 멀리 점프할 수 있는 위치와 도달 가능한 가장 먼 위치를 기록합니다.
    현재 구간이란 count가 1 증가하기 전까지의 구간을 말합니다.
  2. 마지막 도달하는 경우는 무시하고 순회합니다.
  3. 현재 구간에서 가장 멀리갈 수 있는 위치의 max 값을 찾아서 갱신합니다.
  4. idx 가 curr_jump_max와 같다면 점프를 한 것으로 간주하고 카운트를 1회 증가합니다.
  5. curr_jum_max를 점프를 한 위치로 변경합니다.
    (이후 반복에서 next_jump_max는 다음 점프까지 멀리 갈 수 있는 위치가 갱신됩니다)

해당 문제를 풀이하기 위한 적절한 방법이 떠오르지 않아 솔루션을 참고 했습니다. 점프해서 도달할 수 있는 최대 거리와 현재 구간에서 멀리갈 수 있는 거리를 이용한 것은 이해가 잘 갔지만, idx가 0인 경우에 카운트를 1회 하고 시작한다는 점이 이해하기에 어려웠습니다.

 

728x90

'SW개발 > 코딩테스트' 카테고리의 다른 글

[LeetCode]Rotate Image  (0) 2023.05.09
[LeetCode]Permutations  (0) 2023.05.08
[LeetCode]Combination Sum  (0) 2023.05.06
[LeetCode]Find First and Last Position of Element in Sorted Array  (0) 2023.05.05
[LeetCode]Search in Rotated Sorted Array  (0) 2023.05.04
'SW개발/코딩테스트' 카테고리의 다른 글
  • [LeetCode]Rotate Image
  • [LeetCode]Permutations
  • [LeetCode]Combination Sum
  • [LeetCode]Find First and Last Position of Element in Sorted Array
Leffe_pt
Leffe_pt
개발자로서 성장하면서 배워온 지식과 경험을 공유하는 공간입니다.
  • Leffe_pt
    Leffe's tistory
    Leffe_pt
  • 전체
    오늘
    어제
    • 분류 전체보기 (307)
      • SW개발 (303)
        • 코딩테스트 (172)
        • 개발이야기 (23)
        • IT 용어 (17)
        • Python (22)
        • Django (46)
        • Flask (2)
        • Database (1)
        • SQLAlchemy (0)
        • Javascript (5)
        • Linux, Unix (3)
        • JAVA (2)
        • Spring (10)
      • 회고 (4)
      • 사진 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    트리 #AVL #알고리즘 #자료구조
    음식
    배달비 공유
    플레이스토어
    라이프 스타일
    배달
    컨트리뷰터
    어플리케이션
    배공파용
    오픈소스
    django
    Contributor
    g
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Leffe_pt
[LeetCode]Jump Game II
상단으로

티스토리툴바