Python/이것이 취업을 위한 코딩테스트다
[이코테] 파라메트릭 서치
정호나
2024. 11. 25. 15:53
파라메트릭 서치 : 최적화 문제를 결정 문제(예 혹은 아니오)로 바꿔 해결하는 기법
ex) 특정한 조건을 만족하는 가장 알맞은 값을 빠르게 찾는 최적화 문제
일반적으로 코테에서 파라메트릭 서치 문제는 이진 탐색을 이용해 해결할 수 있음
# 떡볶이 떡 만들기
# 떡의 개수N 과 요청한 떡의 길이 m 입력
n,m = list(map(int, input().split(' ')))
# 각 떡의 개별 높이 정보를 입력
array = list(map(int, input().split()))
# 이진탐색을 위한 시작점과 끝점 설정
start = 0
end = max(array)
# 이진 탐색 수행(반복)
result = 0
while(start <= end):
total = 0
mid = (start + end)//2
for x in array:
# 잘랐을 때의 떡의 양 계산
if x > mid:
total += x - mid
# 떡의 양이 부족한 경우 더 많이 자르기(왼쪽 부분 탐색)
if total < m:
end = mid -1
# 떡의 양이 충분한 겨우 덜 자르기(오른쪽 부분 탐색)
else:
# 최대한 덜 잘랐을 때 정답, 여기에서 result 기록
result = mid
start = mid + 1
print(result)