-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
31-xxubin04 #116
31-xxubin04 #116
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1. μ΅μ΄ μ½λ
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
for i, (g, c) in enumerate(zip(gas, cost)):
if g < c: # νμ¬ μ§μ μμ μΆλ°ν μ μλ κ²½μ°
continue
tank = 0
for _ in range(len(gas)): # μ§κΈ μ§μ μμ μΆλ°ν΄λ΄
tank += gas[i] - cost[i]
if tank < 0: # λΉμ©μ΄ λ ν¬λ©΄ λ λͺ»κ°λ―λ‘ stop
break
i = (i + 1) % len(gas) # μΈλ±μ€ μ‘°μ (0λΆν° μμμ΄ μλκΈ° λλ¬Έ)
if tank >= 0: # λκΉμ§ λμλλ°λ μμ¬ μ°λ£κ° μλ€λ©΄ μμ£Ό μ±κ³΅
return i
return -1 # λͺ¨λ κ²½μ°μ λν΄ return iλ₯Ό μ§μ
νμ§ λͺ»νλ€λ©΄ λΆκ°λ₯ν μΌμ΄μ€
λλ¦ ν©λ¦¬μ μΈ μ½λλΌ μκ°λμ§λ§...
μ€ γ
γ
λΉ κΎΈμλ λ°λ‘μ κ±Έλ €λ²λ Έμ΅λλ€.
2. κ°μ λ μ½λ
μ΄λ€ A μ§μ μμ B μ§μ μΌλ‘ κ°λ€κ³ ν λ, μ€κ°μ μΌλ§λ μ°λ£κ° λμΉκ² μΆ©μ νλ λ§μ§λ§ νλμμ μ°λ£ λ€ κΉμλ¨Ήμ΄μ λͺ»κ°κ² λλ©΄ Aμ B μ¬μ΄(A ν¬ν¨)μ μ‘΄μ¬νλ λͺ¨λ μ§μ μ μΆλ°ν μ μλ μ§μ μ΄ μλκ² λ©λλ€.
κ·Έλ λ€λ©΄, κ΅³μ΄ λͺ»κ°λ μ¬μ΄ μ§μ μ νμν νμ μμ΄ λ°λ‘ 건λλ°λ©΄ λκ² μ£ ?
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
if sum(gas) < sum(cost):
return -1
start = 0
while start < len(gas):
tank = 0
for i in range(len(gas)):
i = (i + start) % len(gas)
tank += (gas[i] - cost[i])
if tank < 0:
start = i + 1
break
if tank >= 0:
return start
return -1
ν΅κ³Ό λ°μ΄~
3. μν ν λ²μΌλ‘ λλ΄λ μ½λ...?
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
if sum(gas) < sum(cost):
return -1
start, tank = 0, 0
for i, (g, c) in enumerate(zip(gas, cost)):
tank += (g - c)
if tank < 0:
tank = 0
start = i + 1
return start
gas μ΄ κ³΅κΈλμ΄ cost μ΄ μλͺ¨λλ³΄λ€ λ§λ€λ©΄, λ°λμ ν λ°ν΄λ₯Ό λ μ μλ μ§μ μ΄ μλ€λ λ»μ΄ λ©λλ€.
κ·Έκ±°λ₯Ό λ± ν λ²λ§ μνν΄μ ν΄κ²°νλ μ½λμΈλ°... μ λ κΌΌκΌΌνκ² λ°μ Έλ³΄μ§ μμμ λͺ
ννκ² μ€λͺ
μ΄ μ μλλ€μ... ν λ² μμ보μ€λμ? π
μν νλ²μΌλ‘λ ν μ μμκ΅°μ!! for i in range(len(gas)):
# index(μ£Όμ μ λ²νΈ) : 0 1 2 3 ... m ... n μμ κ°λ€λ©΄ λ§μ½ m ( 0 < m < n)(start = m)μμ ν λ°ν΄ μνκ° κ°λ₯νλ€κ³ μ³€μ λ, μΈλ±μ€ 0λΆν° m-1μ£Όμ μμμ κ°μκΈ° 'μμνλ μ£Όμ μμ λ°λΌ κ° μ£Όμ μλ₯Ό κ±°μΉλ κ³Όμ μμ tank κ°μ΄ λ¬λΌμ§ μλ μμ§ μλ?'λΌλ μλ¬Έμ΄ μκ²Όλλ° μ΄κ²λ λ¬Έμ μλλΌκ΅¬μ.
μ΄λ―λ‘ λ¬Έμ κ° λμ§ μλ κ²μ μμμ΅λλ€. μ κΈ°νλ€μ... κ°μ¬ν©λλ€!π |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μμ΄κ³ μκ°μ΄κ³Ό...ππ μμ² λ§μ΄ λ€μ λμ ν΄λ³΄μ ¨λ€μ..ππ μκ³ λ§μΌμλλ€π₯π
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
μ²μμ νμμ λλ 리μ€νΈλ‘ κ²°κ³Όλ₯Ό λ€ μ μ₯νλ μ½λκ° λ³΅μ‘ν΄μ§κ³ μκ°μ΄ μ€λ걸리λ λ¬Έμ κ° μ겨μ λ€λ₯Έ λ°©λ²μΌλ‘ λ°κΏμ€¬μ΅λλ€!
gasμ costμ κ°μ μ°¨λ₯Ό λμ΄νμ λ, λ³Ό μ μλ 2κ°μ§ κ·μΉμ μ¬μ©νμ΅λλ€.
- κ°μ λΆνΈκ° μ°μμΌλ‘ μμΌλ©΄ κ²ΉμΉ μ μλ€.
- λ€λ₯Έ λΆνΈκ° μ΄μ΄μ Έμλ€λ©΄
a. λ κ°μ ν©μ΄ μμμΈ κ²½μ° λ§¨ μμ κ·Έλλ‘ λκ³
b. λ κ°μ ν©μ΄ μμλΌλ©΄ ν΄λΉ μμΉλ³΄λ€ λ€μμ μμν΄μΌν΄μ λ°λ‘ λΉΌλλ€κ° λ§μ§λ§ κ°μ κ²°κ³Όμ λΉκ΅ν΄μ£Όλ©΄ λ©λλ€.
( -μμ + λμ΄κ°λ +μμ - λμ΄κ°λμ λ°λΌ κΈ°μ΅ν΄μΌνλ μμ μ§μ μ΄ λ¬λΌμ§λ€. )
μ΄λ° νΉμ§μ μ¬μ©νλ€λ©΄, λͺ¨λ μ§μ μ 리μ€νΈλ‘ κΈ°μ΅νκ±°λ, μ¬λ¬ λ² λ°λ³΅μ ν΄μ£Όμ§ μμλ λ©λλ€.
μ½λ
class Solution:
def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:
pos = 0
total = 0
minus = 0
for i in range(len(gas)):
if (tmp := gas[i] - cost[i]) == 0:
continue
elif total * tmp >= 0:
total += tmp
if tmp < 0:
pos = i + 1
continue
if (n := tmp + total) < 0:
minus += n
total = 0
pos = i if tmp > 0 else i + 1
else:
total = n
return pos if total + minus >= 0 else -1
λκ° μ½λκ° λ³΅μ‘νλ° λ μ§§κ² μ€μ΄λ €λ€κ° νμ°Έ λΆμ‘κ³ μμλ€μ...
π λ¬Έμ λ§ν¬
134: Gas Station
βοΈ μμλ μκ°
1μκ° + Ξ±
β¨ μλ μ½λ
1. λ¬Έμ μ΄ν΄
μ£Όμ΄μ§λ μ£Όμ μλ₯Ό μ λΆ μνν μ μλ μμ μ£Όμ μ λ²νΈλ₯Ό λ°ννλ λ¬Έμ μ΄λ€.
μ£Όμ μ λ²νΈ = μΈλ±μ€ λ²νΈ
λΌλ κ²μ μ£Όμνμ.Ex1
μμμ gas = [1, 2, 3, 4, 5], cost = [3, 4, 5, 1, 2]μ΄λ€.(
gas[i]
= κ° μ£Όμ μμμ μ»λ κ°μ€μ,cost[i]
= κ° μ£Όμ μλ‘ κ°κΈ° μν΄ μ°λ κ°μ€μ)3λ² μ£Όμ μ(μΈλ±μ€ = 3)μμ μμν΄λ³΄μ.
ν±ν¬μ κ°μ€λ₯Ό μ μ₯νλ€κ³ μΉκΈ° μν΄ λ³μ
tank
λ₯Ό λ§λ€μ. κ·Έλ¦¬κ³ ν±ν¬λ μ²μμ λΉμ΄μκΈ°μtank = 0
μΌλ‘ μ§μ ν΄μ€λ€.κ°μ€μ μμ νμ 0λ³΄λ€ ν¬κ±°λ κ°μμΌ νλ€. μμκ° λλ€λ©΄ λ€μ μ£Όμ μλ‘ μ΄λν μ μκΈ° λλ¬Έμ λͺ¨λ μ£Όμ μλ₯Ό μνν΄μ μμνλ μ£Όμ μλ‘ λμμ¬ μ μλ€.
2. μκ°μ΄κ³Όπ
λ€μμ 40κ°μ ν μ€νΈ μΌμ΄μ€ μ€μμ 33κ°κΉμ§λ§ ν΅κ³Όν μ½λλ€μ΄λ€.
μκ°μ΄κ³Ό1
μκ°μ΄κ³Ό2
μκ°μ΄κ³Ό3
3. μ½λ λΆμ
μ¬μ€, κ³μ κ³ μΉλ€κ° μκ°μ΄κ³Ό μ΄μκ° ν΄κ²°λμ§ μμμ 34κ° ν μ€νΈ μΌμ΄μ€λ§ ν΅κ³Όν μ½λλ₯Ό μ¬λ¦¬κ² λμλ€...
λ€μ νμ΄λ³΄κ³ λͺ¨λ ν μ€νΈ μΌμ΄μ€λ₯Ό ν΅κ³Όνλ€λ©΄ λ€μ μ¬λ €μΌκ² λ€..π
μμ κ³μ°κ³Όμ μ¬μ§κ³Ό νμ΄λ₯Ό μ°Έκ³ ν΄λ³΄λ©΄, λ€μκ³Ό κ°λ€.
κ·Έλ¦¬κ³ μ°λ¦¬λ
1. κ°μ€ μΆ©μ (+)
κ³Ό2. κ°μ€ μ¬μ©(-)
λ₯Ό κ±°μΉ μνμ κ°μ€ μνκ° μμμ΄λ©΄ μλλ€. μ¦, κ΄νΈλ‘ λ¬Άλ λΆλΆμ΄ ν μ£Όμ μμμ κ±°μΉλ κ³Όμ (nμ£Όμ μμμ κ°μ€μ»κ³ , λ€μ μ£Όμ μ κ°κΈ°μν΄ κ°μ€μ¬μ©)μ΄λ―λ‘ μ΄ κ΄νΈμ κ³μ°μ΄ μμκ° λλ©΄, λ€μ μ£Όμ μλ‘ κ°λ κ³Όμ μμ κ°μ€ λΆμ‘±μΌλ‘ κ° μ μκ² λλ κ²½μ°μ΄λ€.μμ tank μμ
sum(gas) - sum(cost)
κ³Ό κ°λ€. ((4+5+1+2+3) - (1+2+3+4+5))κ·Έλ¬λ―λ‘,
sum(gas) < sum(cost)
==tank < 0
μ΄λ―λ‘ μ΄ κ²½μ°μλ -1μ λ°νν΄μ€λ€.forλ¬ΈμΌλ‘ λͺ¨λ μ£Όμ μλ₯Ό μνκ°λ₯ν κ²½μ°κ° λμ¬λκΉμ§ νμΈν΄μ€λ€.
κ³μ° κ³Όμ μμ tankκ° μμκ° λλ κ²½μ°κ° μκΈ΄λ€λ©΄, μ¦μ breakνκ³ λ€μ μ£Όμ μλ₯Ό μμμ μΌλ‘ μ‘μ κ²½μ°λ₯Ό νμΈν΄μ€λ€.
λ§μ½, λͺ¨λ μ£Όμ μλ₯Ό νμΈνκ³
tank >= 0
μ΄λΌλ©΄ μΈλ±μ€μ΄λ©΄μ μ£Όμ μμ λ²νΈμΈ iλ₯Ό λ°ννλ€.4. μ 체 μ½λ
π μλ‘κ² μκ²λ λ΄μ©
λ€ ν΄κ²°νκ³ PR μ¬λ Έμ΄μΌ νλλ° 12μκ° λμ΄μ μ¬λ¦½λλ€π
μκ°μ΄κ³Ό... νλλ€μπ₯² νμ΄λ₯Ό μ λλ‘ μΌμμ§ λͺ¨λ₯΄κ² λ€μ..
λ¬Έμ νλλ§λ€ νμ λ§μ΄ λΆμ‘±ν κ²μ λλΌκ³ κ°λλ€..