-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
λ¬Έμ μ€λͺ | Jump Game II
μ μ λ°°μ΄ numsκ° μ£Όμ΄μ§ λ, μμμ (μΈλ±μ€ 0)μμ λ§μ§λ§ μΈλ±μ€(nums[n-1])κΉμ§ λλ¬νκΈ° μν μ΅μ μ ν νμλ₯Ό ꡬνλ λ¬Έμ . κ° μμΉ iμμλ μ΅λ nums[i]λ§νΌ μμΌλ‘ μ νν μ μλ€.
π μ μ½μ‘°κ±΄
1 <= nums.length <= 10^40 <= nums[i] <= 1000- νμ λ§μ§λ§ μΈλ±μ€μ λλ¬ν μ μλ€κ³ 보μ₯λ¨
π‘ μμ
-
Input:
nums = [2,3,1,1,4]- Output:
2 - μ€λͺ : μΈλ±μ€ 0μμ 1λ‘ 1λ² μ ν, μΈλ±μ€ 1μμ λ§μ§λ§ μΈλ±μ€λ‘ 1λ² μ ν, μ΄ 2λ²
- Output:
-
Input:
nums = [2,3,0,1,4]- Output:
2
- Output:
λ¬Έμ ν΄κ²° κ³Όμ
Step 1: λ¬Έμ μ΄ν΄νκΈ°
- μμ μμλ‘ μ§μ νμ΄λ³΄κΈ°:
[2,3,1,1,4]μμ:- μΈλ±μ€ 0μμλ 1μΉΈ λλ 2μΉΈ μ ν κ°λ₯ β μΈλ±μ€ 1 λλ 2λ‘ μ΄λ κ°λ₯
- μΈλ±μ€ 1μμλ μ΅λ 3μΉΈ μ ν κ°λ₯ β μΈλ±μ€ 2, 3, 4λ‘ μ΄λ κ°λ₯
- λ°λΌμ 0 β 1 β 4λ‘ μ΄λνλ©΄ 2λ²μ μ νλ‘ λμ°© κ°λ₯
Step 2: μ κ·Ό λ°©λ²
-
μ§κ΄μ μΌλ‘ μκ°νκΈ°
- 그리λ(Greedy) μ κ·Όλ²: κ° μ§μ μμ κ°μ₯ ν¨μ¨μ μΈ μ νλ₯Ό μ ν
- BFS(Breadth-First Search)μ μ μ¬ν λ λ²¨λ³ νμμΌλ‘ μκ°ν μ μμ
-
μκ³ λ¦¬μ¦ ν μμ±
μ΄κΈ° μν: result = 0, left = 0, right = 0 (νμ¬ μμΉ λ²μ) β νμ¬ λ²μ(left ~ right)μμ λλ¬ κ°λ₯ν κ°μ₯ λ¨Ό μμΉ μ°ΎκΈ° β λ€μ λ²μ μ λ°μ΄νΈ: left = right + 1, right = μ΅λλλ¬κ±°λ¦¬ β μ ν νμ(result) μ¦κ° β λ§μ§λ§ μΈλ±μ€μ λλ¬ν λκΉμ§ λ°λ³΅ -
μκ° λ³΅μ‘λ κ³ λ €
- κ° μμΉλ₯Ό μ΅λ ν λ²μ©λ§ λ°©λ¬Έ: O(n)
Step 3: μ½λ μ€κ³
- κ²°κ³Ό λ³μ(result), νμ¬ λ²μμ μμ(left)κ³Ό λ(right) μ΄κΈ°ν
- rightκ° λ§μ§λ§ μΈλ±μ€λ³΄λ€ μμ λμ λ°λ³΅:
- νμ¬ λ²μ(left~right)μμ λλ¬ κ°λ₯ν κ°μ₯ λ¨Ό μμΉ(farthest) κ³μ°
- λ€μ λ²μ μ λ°μ΄νΈ(left = right + 1, right = farthest)
- μ ν νμ(result) μ¦κ°
- μ΅μ’ μ ν νμ λ°ν
Step 4: μ½λ ꡬν λ° λΆμ
var jump = function(nums) {
let result = 0
let left = 0
let right = 0
while(right < nums.length - 1) {
let farthest = 0
for(let i = left; i <= right; i++) {
farthest = Math.max(farthest, i + nums[i])
}
left = right + 1
right = farthest
result += 1
}
return result
};
console.log(jump([2,3,1,1,4]))
console.log(jump([2,3,0,1,4]))