[νλ‘κ·Έλλ¨Έμ€/python] μ€ν/ν : κΈ°λ₯κ°λ°
λ¬Έμ μ€λͺ
νλ‘κ·Έλλ¨Έμ€ νμμλ κΈ°λ₯ κ°μ μμ μ μν μ€μ λλ€. κ° κΈ°λ₯μ μ§λκ° 100%μΌ λ μλΉμ€μ λ°μν μ μμ΅λλ€.
λ, κ° κΈ°λ₯μ κ°λ°μλλ λͺ¨λ λ€λ₯΄κΈ° λλ¬Έμ λ€μ μλ κΈ°λ₯μ΄ μμ μλ κΈ°λ₯λ³΄λ€ λ¨Όμ κ°λ°λ μ μκ³ , μ΄λ λ€μ μλ κΈ°λ₯μ μμ μλ κΈ°λ₯μ΄ λ°°ν¬λ λ ν¨κ» λ°°ν¬λ©λλ€.
λ¨Όμ λ°°ν¬λμ΄μΌ νλ μμλλ‘ μμ μ μ§λκ° μ ν μ μ λ°°μ΄ progressesμ κ° μμ μ κ°λ° μλκ° μ ν μ μ λ°°μ΄ speedsκ° μ£Όμ΄μ§ λ κ° λ°°ν¬λ§λ€ λͺ κ°μ κΈ°λ₯μ΄ λ°°ν¬λλμ§λ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±νμΈμ.
μ ν μ¬ν
- μμ μ κ°μ(progresses, speedsλ°°μ΄μ κΈΈμ΄)λ 100κ° μ΄νμ λλ€.
- μμ μ§λλ 100 λ―Έλ§μ μμ°μμ λλ€.
- μμ μλλ 100 μ΄νμ μμ°μμ λλ€.
- λ°°ν¬λ ν루μ ν λ²λ§ ν μ μμΌλ©°, ν루μ λμ μ΄λ£¨μ΄μ§λ€κ³ κ°μ ν©λλ€. μλ₯Ό λ€μ΄ μ§λμ¨μ΄ 95%μΈ μμ μ κ°λ° μλκ° ν루μ 4%λΌλ©΄ λ°°ν¬λ 2μΌ λ€μ μ΄λ£¨μ΄μ§λλ€.
μ λ΅
def solution(progresses, speeds):
answer = []
while progresses:
for i in range(len(progresses)):
progresses[i] += speeds[i]
finish = 0
while progresses and progresses[0] >= 100:
del progresses[0]
del speeds[0]
finish += 1
if finish > 0:
answer.append(finish)
return answer
ν΅κ³Όνμμ§λ§ whileλ¬Έμ λ λ² μ¬μ©νλ―λ‘ ν¨μ¨μ μΈ μ½λλ μλλ€.
μ€νμ΄λ νλ₯Ό μ¬μ©νμ§λ μμλ€.
λ€λ₯Έ μ λ΅
def solution(progresses, speeds):
Q = []
for p, s in zip(progresses, speeds):
days = -((p-100)//s) # μ¬λ¦ΌνκΈ° μν΄ p-100 ν -
if not Q or days > Q[-1][0] :
Q.append([days,1])
else:
Q[-1][1] += 1
return [q[1] for q in Q]
λ€λ₯Έ μ¬λμ νμ΄λ₯Ό μ΄ν΄νκΈ° μ½λλ‘ μ΄μ§ μμ ν μ½λμ΄λ€.
zipμ μ΄μ©νμ¬ λ 리μ€νΈμ κ°μ μμΉμ μλ₯Ό p, sλ‘ ν λΉνκ³
daysμ λͺμΌλμ μμ ν΄μΌνλμ§ κ³μ°νλ€.
100-pκ° μλ p-100 ν sλ‘ λλλ μ΄μ λ μ¬λ¦ΌνκΈ° μν΄μμ΄λ€.
μλ₯Ό λ€μ΄ pκ° 40μ΄κ³ sκ° 40μΈ κ²½μ°μμ (100-40)/40 = 1.5μ΄λ―λ‘ 2μΌμ΄ κ±Έλ¦°λ€.
(100-p)//sλ‘ κ³μ°νλ©΄ (100-40)//40 = 1 μ΄ λκ³
(p-100)//sλ‘ κ³μ°νλ©΄ (40-100)//40 = -2 κ° λλ―λ‘ μλμΌλ‘ μ¬λ¦Όμ΄ κ°λ₯νλ€.
Qμ μμλ [days, λ°°ν¬ κ°λ₯ μμ μ μ]μ 리μ€νΈλ‘ μ΄λ£¨μ΄μ Έμλ€.
Qκ° λΉμ΄μκ±°λ Q[-1][0]μ΄ daysλ³΄λ€ μλ€λ©΄
μμ μμ μ΄ μλ£λμμ λ μμ μ μλ£λκΈ° μ μ΄λΌλ λ»μ΄λ―λ‘ Qμ [days, 1]μ μΆκ°νλ€.
Q[-1][0]μ΄ daysλ³΄λ€ ν¬λ€λ©΄
μμ μμ μ΄ μλ£λμμ λ μμ λ μλ£λμ΄μλ€λ λ»μ΄λ―λ‘ Q[-1][1]μ 1μ μΆκ°νλ€.