-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
λ¬Έμ μ€λͺ | Gas Station
π μ μ½μ‘°κ±΄
n == gas.length == cost.length1 <= n <= 10^50 <= gas[i], cost[i] <= 10^4
π‘ μμ
-
Input: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
- Output: 3
-
Input: gas = [2,3,4], cost = [3,4,3]
- Output: -1
λ¬Έμ ν΄κ²° κ³Όμ
Step 1: λ¬Έμ μ΄ν΄νκΈ°
- μ£Όμ μλ₯Ό μννλ©΄μ μ¬νμ μλ£ν μ μλ μμμ μ μ°ΎμμΌ ν¨.
- μ°¨λμ νμ λΉ ν±ν¬λ‘ μμ.
- κ° μ£Όμ μμμ κ°μ€λ₯Ό μΆ©μ νκ³ , λ€μ μ£Όμ μλ‘ μ΄λνλ λ° κ°μ€λ₯Ό μλͺ¨.
- μμλ‘ μ§μ νμΈν΄λ³΄κΈ°:
- μμ 1: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
- μΈλ±μ€ 3μμ μμνμ λ μν κ°λ₯
- μμ 2: gas = [2,3,4], cost = [3,4,3]
- μ΄λμ μμν΄λ μν λΆκ°λ₯
- μμ 1: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
Step 2: μ κ·Ό λ°©λ²
-
μ§κ΄μ μΌλ‘ μκ°νκΈ°
- μ 체 κ°μ€ μμ΄ μ 체 λΉμ©λ³΄λ€ μμΌλ©΄ λΆκ°λ₯
- κ°λ₯ν λͺ¨λ μμμ μ κ³ λ €ν΄μΌ ν¨
-
κ΄μ°°ν μ€μν ν¨ν΄
- λ§μ½ iμμ jκΉμ§ κ°λ κ²μ΄ λΆκ°λ₯νλ€λ©΄, iμ j μ¬μ΄μ μ΄λ€ μ§μ μμ μμν΄λ jμ λλ¬ν μ μμ
- λ°λΌμ κ°μ€κ° λΆμ‘±ν΄μ§λ μ§μ λ€μλΆν° μλ‘κ² μμνλ©΄ λ¨
Step 3: μ½λ μ€κ³
- μ΄ κ°μ€λκ³Ό μ΄ λΉμ©μ λΉκ΅νμ¬ ν΄κ²° κ°λ₯μ± νμΈ
- κ°λ₯ν μμμ μ°ΎκΈ°:
- κ° μ§μ μμ λ¨μ κ°μ€λ κ³μ° (gas[i] - cost[i])
- κ°μ€κ° λΆμ‘±ν΄μ§λ©΄(μμ) μμμ μ λ€μ μ§μ μΌλ‘ κ°±μ
- λ§μ§λ§κΉμ§ λμμ λ λ¨μ μμμ μ΄ μ λ΅
Step 4: μ½λ ꡬν
/**
* @param {number[]} gas
* @param {number[]} cost
* @return {number}
*/
var canCompleteCircuit = function(gas, cost) {
// μ΄ κ°μ€λκ³Ό μ΄ λΉμ© κ³μ°
let totalGas = 0;
let totalCost = 0;
for (let i = 0; i < gas.length; i++) {
totalGas += gas[i];
totalCost += cost[i];
}
// μ΄ κ°μ€λμ΄ μ΄ λΉμ©λ³΄λ€ μμΌλ©΄ λΆκ°λ₯
if (totalGas < totalCost) return -1;
// κ°λ₯ν μμμ μ°ΎκΈ°
let tank = 0;
let start = 0;
for (let i = 0; i < gas.length; i++) {
tank += gas[i] - cost[i];
// νμ¬ μ§μ κΉμ§ κ°μ€κ° λΆμ‘±νλ©΄ λ€μ μ§μ μμ μμ
if (tank < 0) {
tank = 0;
start = i + 1;
}
}
return start;
};Metadata
Metadata
Assignees
Labels
No labels