매개변수 탐색을 이용해서 푸는 문제이다
이분 탐색이랑 비슷한듯 미묘하게 다른 느낌이다. 코드도 이분 탐색의 코드랑 비슷한 것 같다
최적화 문제를 결정 문제로 푸는 방법이라고 한다.
💡최적화 문제 : 어떤 알고리즘의 최적의 솔루션을 찾는 법
💡결정 문제 : 답이 이미 결정되어 있다고 보고 문제를 푸는 법
n, m = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort()
def parametric(arr, m):
start = 0
end = arr[-1]
while end >= start: #조건 수정
mid = (start + end) // 2
sum = 0
for i in range(len(arr)):
if arr[i] > mid:
sum += arr[i] - mid
if sum > m:
start = mid + 1
elif sum == m:
return mid
else:
end = mid - 1
return end
print(parametric(arr, m))
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
백준 > 2309 일곱 난쟁이 (0) | 2024.04.04 |
---|---|
백준 > 7795 먹을 것인가 먹힐 것인가 (0) | 2024.04.04 |
백준 > 2869 달팽이는 올라가고 싶다 (0) | 2024.03.30 |
백준 > 9012 괄호 (0) | 2024.03.28 |
백준 > 1920 수 찾기 (0) | 2024.03.10 |