이코테 p.201 문제
고칠점
list 안에서 최대값 찾을 때 max(array) 로 찾자.
자꾸 sorting 하고 원소로 끄집어내지 말고
import sys
def cutDduck(cuttingHeight):
sum = 0
for i in data:
if i > cuttingHeight:
i -= cuttingHeight
sum += i
return sum
def binary_search(start, end, target):
global answer
if start >= end:
return
mid = (start + end) // 2
sumDduck = cutDduck(mid)
if sumDduck == target:
answer = mid
return
elif sumDduck > target:
binary_search(mid + 1, end, target)
else:
binary_search(start, mid - 1, target)
input = sys.stdin.readline
n, m = map(int, input().split())
data = list(map(int, input().split()))
data.sort(reverse=True)
answer = 0
binary_search(0, data[0], m)
print(answer)
'알고리즘' 카테고리의 다른 글
[Algorithm] 금광 문제 (0) | 2022.04.27 |
---|---|
[Algorithm] 1로 만들기 (0) | 2022.04.25 |
[Algorithm] 10026. 적록색약 (0) | 2022.04.13 |
[Algorithm] 2589. 보물섬 (0) | 2022.04.13 |
순열 (Permutation) 알고리즘의 모든 것 (0) | 2020.05.14 |