π€ νμ΄ μ½λ
def check(n, times, k):
can_enter = 0
for t in times:
can_enter += k // t
return True if can_enter >= n else False
def solution(n, times):
answer = 0
start = 0
end = min(times) * n
mid = start
while mid + 1 != end:
mid = (start + end) // 2
if check(n, times, mid):
end = mid
else:
start = mid
return end
π€ λ¬Έμ νμ΄
μ΄λΆνμμΌλ‘ νμ΄ν΄μΌ νλ λ¬Έμ μ λλ€. νμ μ΄λΆ νμμ μμμ κ³Ό λμ μ μ‘λ κΈ°μ€κ³Ό, μ΄λ€ κ²μ μ΄λΆνμμ μ¬μ©ν΄μΌ ν μ§ νλ¨νλκ² μ΄λ ΅λ€μ.
μ΄ λ¬Έμ μμ μ΄λΆνμμ λμμ, λͺ¨λ μ¬λμ΄ μ¬μ¬λ₯Ό λ°λλ° κ±Έλ¦¬λ μκ°μ μ΄λΆνμμ λμμΌλ‘ μΌμ΅λλ€.
λμ¬ μ μλ μ΅λ μκ°μ, κ²μ¬κ΄ μ€ κ°μ₯ μ§§κ² κ±Έλ¦¬λ κ²μ¬κ΄μμ N λͺ μ΄ λͺ¨λ λ°λ μΌμ΄μ€κ° λ μ μκ² λ€μ.
κ·Έλμ startμ endλ₯Ό κ°κ° 0, min(times) * nμΌλ‘ μ‘μμ΅λλ€.
μ΄λΆ νμμ ν΅ν΄ midλ₯Ό (start + end) // 2λ‘ μ€μ ν ν, check ν¨μλ₯Ό ν΅ν΄ μ΄λΆνμμ λ²μμ μμ μ€μΌμ§, λ€λ₯Ό μ€μΌμ§ κ²°μ ν©λλ€.
check ν¨μλ k μκ°λμ, timesμ κ°λ κ΄λ€μ΄ κ°κ° μ κ΅ μ¬μ¬λ₯Ό μ§νν μ μλ μμ λͺ¨λ λν κ°μ λ°νμΌλ‘, μ£Όμ΄μ§ nλͺ μ΄μμ μ±μ λμ§ λͺ»μ±μ λμ§μ λ°λΌ Trueμ Falseλ₯Ό κ²°μ νλ ν¨μμ λλ€.
λ§μ½ μ±μ λ€λ©΄, mid κ°μ μ’ λ μ€μ΄κΈ° μν΄ endλ₯Ό mid ν¬μ§μ μΌλ‘ λ°κΏλλ€.
nλͺ μ λ€ λͺ» μ±μ λ€λ©΄ μκ°μ μ’ λ λ리기 μν΄ startλ₯Ό mid ν¬μ§μ μΌλ‘ λ°κΏλλ€.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] 거리λκΈ° νμΈνκΈ° (level2, python) (0) | 2023.04.11 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] λ©μ©‘ν μ¬κ°ν (level2, python) (0) | 2023.04.11 |
[νλ‘κ·Έλλ¨Έμ€] μ¬νκ²½λ‘ (level3, python) (1) | 2023.04.11 |
[νλ‘κ·Έλλ¨Έμ€] λμ€ν¬ 컨νΈλ‘€λ¬ (level3, python) (0) | 2023.04.10 |
[νλ‘κ·Έλλ¨Έμ€] μ λ ₯λ§μ λλ‘ λλκΈ° (level2, python) (0) | 2023.04.10 |