-
[λ°±μ€] 2512 μμ° with PythonPS 2022. 6. 10. 16:11728x90λ°μν
π BOJ 2512 μμ°
π‘ 쑰건
- κ΅κ°μ μν μ€ νλλ μ¬λ¬ μ§λ°©μ μμ°μμ²μ μ¬μ¬νμ¬ κ΅κ°μ μμ°μ λΆλ°°νλ κ²μ΄λ€.
κ΅κ°μμ°μ μ΄μ‘μ 미리 μ ν΄μ Έ μμ΄μ λͺ¨λ μμ°μμ²μ λ°°μ ν΄ μ£ΌκΈ°λ μ΄λ €μΈ μλ μλ€.
κ·Έλμ μ ν΄μ§ μ΄μ‘ μ΄νμμ κ°λ₯ν ν μ΅λμ μ΄ μμ°μ λ€μκ³Ό κ°μ λ°©λ²μΌλ‘ λ°°μ νλ€.- λͺ¨λ μμ²μ΄ λ°°μ λ μ μλ κ²½μ°μλ μμ²ν κΈμ‘μ κ·Έλλ‘ λ°°μ νλ€.
- λͺ¨λ μμ²μ΄ λ°°μ λ μ μλ κ²½μ°μλ νΉμ ν μ μ μνμ‘μ κ³μ°νμ¬ κ·Έ μ΄μμΈ μμ°μμ²μλ λͺ¨λ μνμ‘μ λ°°μ νλ€.
- μνμ‘ μ΄νμ μμ°μμ²μ λν΄μλ μμ²ν κΈμ‘μ κ·Έλλ‘ λ°°μ νλ€.
- μ¬λ¬ μ§λ°©μ μμ°μμ²κ³Ό κ΅κ°μμ°μ μ΄μ‘μ΄ μ£Όμ΄μ‘μ λ, μμ 쑰건μ λͺ¨λ λ§μ‘±νλλ‘ μμ°μ λ°°μ νλ λ¬Έμ .
- 첫째 μ€μλ μ§λ°©μ μλ₯Ό μλ―Ένλ μ μ Nμ΄ μ£Όμ΄μ§λ€. Nμ 3 μ΄μ 10,000 μ΄νμ΄λ€.
- λ€μ μ€μλ κ° μ§λ°©μ μμ°μμ²μ νννλ Nκ°μ μ μκ° λΉμΉΈμ μ¬μ΄μ λκ³ μ£Όμ΄μ§λ€. μ΄ κ°λ€μ λͺ¨λ 1 μ΄μ 100,000 μ΄νμ΄λ€.
- κ·Έ λ€μ μ€μλ μ΄ μμ°μ λνλ΄λ μ μ Mμ΄ μ£Όμ΄μ§λ€. Mμ N μ΄μ 1,000,000,000 μ΄νμ΄λ€.
- μ΄λΆνμ μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin n = int(stdin.readline()) arr = list(map(int, stdin.readline().split())) m = int(stdin.readline()) start, end = 0, max(arr) ans = -int(1e9) while start <= end: mid = (start + end) // 2 total = 0 for i in arr: total += min(i, mid) if total > m: end = mid - 1 else: start = mid + 1 ans = max(ans, mid) print(ans)
π μμ λ° μ€νκ²°κ³Ό
μμ
4 120 110 140 150 485
μ€νκ²°κ³Ό
127
β¨οΈ λ¬Έμ νμ΄
- μ΄ μμ°μ λνλ΄λ Mμ΄ N μ΄μ 1,000,000,000 μ΄νμ΄λ€.
μ΄ ν° κ°μ NλΆν° νμνλ©΄ μκ°μ΄κ³Όκ° 걸리기 λλ¬Έμ μ΄λΆνμμ μ¬μ©ν΄ μ΄μμ°μμ μνμ‘μ μ°Ύμμ£Όλ©΄ λλ€.
- μμ²ν μμ°λ€μ λ΄μ arr 리μ€νΈμ max κ°μ r, 0μ lλ‘ λκ³ μ΄λΆνμμ μ§ννλ€.
- (l + r) // 2 κ°μ mid λ‘ λκ³ arr 리μ€νΈλ₯Ό μννλ©΄μ mid κ°κ³Ό μννλ κ°μ λΉκ΅ν΄ μμ κ°μ total μ λ£μ΄μ€λ€.
- total μ΄ m κ°λ³΄λ€ ν΄ λλ rμ midλ‘ λ‘κ²¨μ£Όκ³ , κ·Έ μΈμ μν©μΌ λλ ansμ κ°κ³Ό λΉκ΅ν΄μ ν° κ°μ ans μ μ μ₯νλ€.
λ°μν'PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 10451 μμ΄ μ¬μ΄ν΄ with Python (0) 2022.06.14 [λ°±μ€] 2644 μ΄μκ³μ° with Python (0) 2022.06.13 [λ°±μ€] 1520 λ΄λ¦¬λ§ κΈΈ with Python (0) 2022.06.10 [λ°±μ€] 1309 λλ¬Όμ with Python (0) 2022.06.07 [λ°±μ€] 1238 νν° with Python (0) 2022.06.07 - κ΅κ°μ μν μ€ νλλ μ¬λ¬ μ§λ°©μ μμ°μμ²μ μ¬μ¬νμ¬ κ΅κ°μ μμ°μ λΆλ°°νλ κ²μ΄λ€.