μ κ΅μ¬μ¬λ₯Ό λ°μμΌ νλ nλͺ μ μ¬λμ΄ μμ λ μ¬μ¬κ΄λ€μ μ¬μ¬ν λ κ°κ° μ£Όμ΄μ§ timesμ κ°μ μκ°μ΄ μμλλ€.
μ΄ nλͺ μ μ¬λμ΄ μ λΆ κ²μ¬λ₯Ό λ°λλ° κ±Έλ¦¬λ μ΅μμ μκ°μ ꡬνλ λ¬Έμ μλ€.
μΌλ¨ nλͺ μ μ¬λμ΄ κ²μ¬λ°λλ° κ±Έλ¦¬λ μ΅μ μ μκ°μ κ°μ₯ μ€λ μκ°μ΄ μμλλ μ¬μ¬κ΄μκ² λͺ¨λ μ¬λμ΄ κ²μ¬λ₯Ό λ°λ κ²½μ°μ΄λ€.
μ΄μ§ νμμ μ΄μ©ν΄ left = 0 right= μ΅μ μ μκ°μΌλ‘ νμ¬ κ°μ₯ μ΅μλ‘ κ±Έλ¦¬λ μκ°μ μ°Ύλλ€.
left = 0
right = max(time_list) * n # λͺ¨λ μ¬λμ΄ λ€ λ°μ λ λλλ μκ°μ μ΅μ
μ κ²½μ°
while left <= right:
mid = (left + right) // 2
people = 0
for i in time_list:
# κ° μ¬μ¬κ΄λ€μ΄ mid μκ°μμ κ²μ¬λ₯Ό λλΌ μ μλ
people += (mid // i)
# mid μκ°μμ μ΅λλ‘ κ²μ¬ν μ μλ μΈμ = people
if people >= n:
answer = mid
right = mid - 1
elif people < n:
left = mid + 1
print(answer)
λλ μ΄μ§νμμ ꡬννλ©΄μ κ° μ¬μ¬κ΄λ€μ΄ νΉμ μκ°μμ κ²μ¬λ₯Ό λλΌ μ μλμ§ νμΈνλ 쑰건μ λ§λλ κ²μ΄ μ’ μ΄λ €μ λ€. μΌλ¨ time_listλ₯Ό λλ forλ¬Έμ λ§λ€κ³ κ°κ°μ μ¬μ¬μμλ€μ΄ μ£Όμ΄μ§ μκ°μμ μ΅λ λͺλͺ μ μ¬λλ€μ κ²μ¬ν μ μλμ§ κ΅¬νκ³ κ·Έ λͺ¨λ μλ₯Ό peopleμ λνλ€.
μ¦ peopleλ³΄λ€ nμ΄ λ ν¬λ€λ©΄ μ£Όμ΄μ§ μκ°(mid)μμ μ¬μ¬λ₯Ό νμ§ λͺ»νλ κ²μ΄κ³ nμ΄ λ μλ€λ©΄ μ£Όμ΄μ§ μκ°μμ μ¬μ¬κ° κ°λ₯νκ²μ΄λ€.
μ΅μμκ°μ ꡬν λκΉμ§ μ΄ κ³Όμ μ λ°λ³΅νλ€.
'ALGORITHM' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BFS] λ°±μ€ 2178 λ¬Έμ νμ΄ (0) | 2020.10.26 |
---|---|
[DFS/BFS] λ°±μ€ 1260 λ¬Έμ νμ΄ (0) | 2020.10.26 |
[TSP] λ°±μ€ 10971 λ¬Έμ νμ΄ (0) | 2020.09.19 |
[Stack] λ°±μ€ 3986 λ¬Έμ νμ΄ (0) | 2020.09.19 |
[DP] λ°±μ€ 14501 λ¬Έμ νμ΄ (0) | 2020.09.16 |