π§©λ¬Έμ ν΄μ
κ°κ³ λμ λ€μ kκ°μ κ°μ κΈΈμ΄μ λμ μΌλ‘ μλ₯΄λ, μλ₯Έ λμ μͺΌκ°λ¦¬λ€μ λ€μ μ¬μ©ν μ μλ€. μ΄λ λ§λ€ μ μλ μ΅λ κΈΈμ΄μ λμ μ ꡬνλ λ¬Έμ μ΄λ€.
π νμ΄
μ«μ λ²μκ° μ¬μμΉ μλ€. κ°κ³ μλ λμ μ μκ° λ°±λ§κ°μ΄κ³ , λμ μ΄ κΈΈμ΄λ 2^31-1 λ³΄λ€ μμ μμ°μμ΄λ€.γ
μΌλ°μ μΌλ‘ μ κ·Όνλ€κ°λ μκ°μ΄κ³Όλ κ²μ΄ λΆλͺ νλ€. μ΄ λ¬Έμ λ μ΄λΆνμμΌλ‘ νμ΄μΌ νλ€.
첫λ²μ§Έ μμ΄λμ΄!
- κ°μ§κ³ μλ λμ μ€ μ΅μκ°μ μ°Ύλλ€.
- μ΅μκ° λμ μ end κ°μ λκ³ μ΄λΆνμμ νλ€.
- νμ κ°λ€μ 리μ€νΈμ μ μ₯νκ³ , μ΅μ’ μ μΌλ‘ κ·Έ 리μ€νΈμ μ΅λκ°μ μΆλ ₯νλ€.
μ΅μκ°λμ μ end κ°μ λ μ΄μ λ μ΅λκ°λμ μ end κ°μ λλ€ νμ¬λ κ²°κ΅μλ μ΅μκ°λμ μ μ¬ κ²μ΄λΌκ³ μκ°νλ€.
λ¬Όλ‘ λ§λ λ§μ΄κΈ΄ νλ€. κ·Έλ¬λ μκ°νμ§ λͺ»νλ λ°λ‘κ° μμλ€.
λ°λ‘ kμ κ°μ΄λ€. kλ λ§λ€κ³ μ νλ λμ μ κ°―μλ€. λ§μ½ kκ° 1μ΄λΌλ©΄, λμ μ μλ₯Ό νμκ° μκ³ , κ°μ§κ³ μλ κ²λ€μ€μμ κ°μ₯ κΈ΄ λμ μ μ¬μ©νλ©΄ λλ€!
κ·Έλμ μ΅μκ°λμ μ μ¬μ©νλ©΄ μμ κ°μ κ²½μ°μ μ²λ¦¬κ° μ΄λ €μμ§λ€.
λλ²μ§Έ μμ΄λμ΄!
- κ°μ§κ³ μλ λμ μ€ μ΅λκ°μ μ°Ύλλ€.
- μ΅λκ° λμ μ end κ°μ λκ³ μ΄λΆνμμ νλ€.
- νμ κ°λ€μ 리μ€νΈμ μ μ₯νκ³ , μ΅μ’ μ μΌλ‘ κ·Έ 리μ€νΈμ μ΅λκ°μ μΆλ ₯νλ€.
μμ λ¬Έμ κ° ν΄κ²°λμλ€!
π» μ½λ
n, k = map(int, input().split())
# λμ μ κΈΈμ΄ λ΄μ 리μ€νΈ
lan = [int(input()) for i in range(n)]
# κ°κ³ μλ λμ μ€ μ΅λκ°
max_lan = max(lan)
# ν보ꡰ λ΄μ 리μ€νΈ
res = []
def binary(k, start, end):
# μ΄λΆνμ μμ
while start <= end:
mid = (start + end) // 2
cnt = 0
for i in lan:
# ꡬν΄μ§ κ°μΌλ‘ λμ μ μλΌλ³Έλ€
cnt += i//mid
# μλ₯Έ λμ λ€μ΄ k λ³΄λ€ μλ€λ©΄ μ’λ μκ² μλΌμΌν¨
if cnt < k:
end = mid - 1
# 쑰건μ λ§μ‘±νλ κ²½μ°.
else:
# ν보μ λ£κ³ μ’λ ν¬κ² λ§λ€μ΄λ΄
res.append(mid)
start = mid + 1
# μ΄λΆνμ ν¨μ νΈμΆ
binary(k,1,max_lan)
# ν보ꡰμμ μ΅λκ° μΆλ ₯
print(max(res))
π λ¬Έμ λ§ν¬ : λμ μλ₯΄κΈ°
'Problem Solving > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 2573λ²: λΉμ° - νμ΄μ¬ (0) | 2022.05.30 |
---|---|
[λ°±μ€] 2502λ²: λ‘ λ¨Ήλ νΈλμ΄ (0) | 2022.05.26 |
[λ°±μ€] 25192λ²: μΈμ¬μ± λ°μ κ³°κ³°μ΄ - νμ΄μ¬ (0) | 2022.05.22 |
[λ°±μ€] 2606λ²: λ°μ΄λ¬μ€ - νμ΄μ¬ (0) | 2022.05.19 |
[λ°±μ€] 1918λ²: νμνκΈ°μ - νμ΄μ¬ (0) | 2022.05.16 |