-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
λ¬Έμ μ€λͺ | Jump Game
μ μ λ°°μ΄ numsκ° μ£Όμ΄μ§λλ€. μ²μμλ λ°°μ΄μ 첫 λ²μ§Έ μΈλ±μ€μ μμΉνλ©°, λ°°μ΄μ κ° μμλ ν΄λΉ μμΉμμ μ΅λ μ ν κΈΈμ΄
λ§μ§λ§ μΈλ±μ€μ λλ¬ν μ μμΌλ©΄ trueλ₯Ό, κ·Έλ μ§ μμΌλ©΄ falseλ₯Ό λ°ν
π μ μ½μ‘°κ±΄
1 <= nums.length <= 10^40 <= nums[i] <= 10^5
π‘ μμ
-
Input: nums = [2,3,1,1,4]
- Output: true
- μ€λͺ : μΈλ±μ€ 0μμ 1μΌλ‘ 1λ¨κ³ μ νν λ€μ, 3λ¨κ³λ₯Ό μ ννμ¬ λ§μ§λ§ μΈλ±μ€μ λλ¬
-
Input: nums = [3,2,1,0,4]
- Output: false
- μ€λͺ : 무μμ νλ νμ μΈλ±μ€ 3μ λλ¬ν©λλ€. μ΅λ μ ν κΈΈμ΄λ 0μ΄λ―λ‘ λ§μ§λ§ μΈλ±μ€μ λλ¬ν μ μμ
λ¬Έμ ν΄κ²° κ³Όμ
Step 1: λ¬Έμ μ΄ν΄νκΈ°
- μμ μμλ‘ μ§μ μ ν κ²μ μ΄ν΄νκΈ°
- [2,3,1,1,4]μμ:
- μΈλ±μ€ 0μμ μμ, μ΅λ 2μΉΈ μ ν κ°λ₯ β μΈλ±μ€ 1 λλ 2λ‘ κ° μ μμ
- μΈλ±μ€ 1λ‘ κ°λ©΄ μ΅λ 3μΉΈ μ ν κ°λ₯ β λ°λ‘ λ§μ§λ§ μΈλ±μ€(4)μ λλ¬ κ°λ₯
- [3,2,1,0,4]μμ:
- μΈλ±μ€ 0μμ μμ, μ΅λ 3μΉΈ μ ν κ°λ₯ β μ΄λλ₯Ό κ°λ κ²°κ΅ μΈλ±μ€ 3μ λλ¬
- μΈλ±μ€ 3μ κ°μ 0μ΄λ―λ‘ λ μ΄μ μ νν μ μμ β λ§μ§λ§ μΈλ±μ€ λλ¬ λΆκ°
- [2,3,1,1,4]μμ:
Step 2: μ κ·Ό λ°©λ²
-
μ§κ΄μ μΌλ‘ μκ°νκΈ°
- μ²μμ μμμλΆν° μ κ·Όν μ μλ€κ³ μκ°νκ² μ§λ§, λ€μμλΆν° μ κ·Όνλ λ°©μμ΄ ν¨μ¨μ
- λ§μ§λ§ μΈλ±μ€μμ μμν΄ μ²« λ²μ§Έ μΈλ±μ€κΉμ§ μμμΌλ‘ μ§ν
- λͺ©ν μΈλ±μ€(goal)μ λλ¬ν μ μλ μμΉλ₯Ό κ³μ μ λ°μ΄νΈ
-
μκ³ λ¦¬μ¦ ν μμ±
goal = λ§μ§λ§ μΈλ±μ€ (nums.length - 1)
β
i = λ§μ§λ§ μΈλ±μ€λΆν° 0κΉμ§ μμμΌλ‘ μν
β
νμ¬ μμΉ(i)μμ nums[i]λ§νΌ μ ν κ°λ₯
β
i + nums[i] >= goalμΈμ§ νμΈ
β
λ§λ€λ©΄ β goal = i (λͺ©ν μ§μ μ
λ°μ΄νΈ)
μλλ©΄ β λ€μ μΈλ±μ€λ‘ μ΄λ
β
μ΅μ’
μ μΌλ‘ goalμ΄ 0μ΄λ©΄ μ±κ³΅ (μ²μλΆν° λκΉμ§ λλ¬ κ°λ₯)
Step 3: μ½λ μ€κ³
- λͺ©ν μΈλ±μ€(goal)λ₯Ό λ§μ§λ§ μΈλ±μ€λ‘ μ΄κΈ°ν
- λ§μ§λ§ μΈλ±μ€λΆν° 0κΉμ§ μμμΌλ‘ μν:
- νμ¬ μμΉμμ μ΅λ μ νλ‘ λͺ©νμ λλ¬ κ°λ₯νμ§ νμΈ
- κ°λ₯νλ€λ©΄ λͺ©ν μμΉλ₯Ό νμ¬ μμΉλ‘ μ λ°μ΄νΈ
- μ΅μ’ μ μΌλ‘ λͺ©νκ° μ²« λ²μ§Έ μΈλ±μ€(0)μΈμ§ νμΈ
Step 4: μ½λ ꡬν
/**
* @param {number[]} nums
* @return {boolean}
*/
var canJump = function(nums) {
// λͺ©ν μΈλ±μ€λ₯Ό λ§μ§λ§ μΈλ±μ€λ‘ μ΄κΈ°ν
let goal = nums.length - 1;
// λ€μμλΆν° μμΌλ‘ μν
for(let i = nums.length - 1; i >= 0; i--) {
// νμ¬ μμΉμμ μ ννμ¬ λͺ©νμ λλ¬ν μ μλμ§ νμΈ
if(i + nums[i] >= goal) {
// κ°λ₯νλ€λ©΄ λͺ©νλ₯Ό νμ¬ μμΉλ‘ μ
λ°μ΄νΈ
goal = i;
}
}
// λͺ©νκ° μ²« λ²μ§Έ μΈλ±μ€λΌλ©΄ μ±κ³΅
return goal === 0;
};