알고리즘
[백준 2805] 나무 자르기 - 이분 탐색
kyeongjun-dev
2022. 1. 13. 22:04
코드
# 목표 갯수 : n, 나무 길이 목록 : arr
def solution(n, arr):
left = 1
right = max(arr)
mid = right
while left <= right:
tmp = 0
mid = (left + right) // 2
for tree in arr:
if tree - mid <= 0:
continue
tmp += tree - mid
# 잘린 길이가 목표 길이보다 길면, 높이를 더 위로 설정
if tmp >= n:
left = mid + 1
# 잘린 길이가 목표 길이보다 짧으면, 높이를 더 아래로 설정
elif tmp < n:
right = mid - 1
print(right)
a, n = map(int, input().split())
arr = list(map(int, input().split()))
solution(n, arr)