백준 2805번(나무 자르기)

ansehun·2022년 9월 10일
0

백준 코딩 연습

목록 보기
5/9

📒 알고 가야 하는 것

- 이진탐색: 오름차순된 자료를 반으로 나누어 탐색하는 방법.
def binary_search(target, data) :
	data.sort()
    start = 0
    end = len(data) - 1
    
    while start <= end :
    	mid = (start + end) // 2
        
        if data[mid] == target :
        	return mid
        elif data[mid] < target :
        	start = mid + 1
        else :
        	end = mid - 1
    return None

📌 코드

from re import T
import sys

N, M = map(int, sys.stdin.readline().split())
l = list(map(int, sys.stdin.readline().split()))

right = max(l)
left = 1

while left <= right :
    mid = (left + right) // 2
    count = 0
    for i in range(len(l)) :
        if l[i] - mid > 0 :
            count = count + (l[i] - mid)
    
    if M > count :
        right = mid -1
    elif M <= count :
        left = mid +1

        
print(right)
        



### 📌 **피드백**
  • 이진탐색에 대해서 정확히 구현하지 못했음...
  • 잘 인지했다가 나중에 써먹을 필요가 있다!

0개의 댓글