나의 코드
n, m = map(int, input().split())
data = sorted(list(map(int, input().split())))
def binary(arr, start, end):
if start > end:
return end
mid = (start + end) // 2
count = 0
for i in arr:
if mid < i:
count += (i - mid)
if count == m:
return mid
elif count < m:
return binary(arr, start, mid - 1)
else:
return binary(arr, mid + 1, end)
print(binary(data, 0, max(data)))
풀이 방법
이분탐색 랜선 자르기 문제와 유사한 문제
'백준 알고리즘 (Baekjoon Algorithm)' 카테고리의 다른 글
[파이썬] 백준 알고리즘 No.1269 대칭 차집합 (0) | 2023.02.18 |
---|---|
[파이썬] 백준 알고리즘 No.14425 문자열 집합 (0) | 2023.02.18 |
[파이썬] 백준 알고리즘 No.1654 랜선 자르기 (0) | 2023.02.17 |
[파이썬] 백준 알고리즘 No.3055 탈출 (0) | 2023.02.10 |
[파이썬] 백준 알고리즘 No.16234 인구 이동 (0) | 2023.02.09 |