2805. 나무 자르기
by 브이담곰
https://www.acmicpc.net/problem/2805
✔ 유형 : 이분 탐색
✔ 문제 풀이: 리스트 양쪽에 start와 end 피벗을 두고 범위를 좁혀가며 답을 찾는다.
#2850 나무자르기
#이분 탐색
import sys
input=sys.stdin.readline # input함수 바꾸기
N, M = map(int, input().split())
trees = list(map(int, input().split(' ')))
st, en = 0, max(trees) # 최소 최대값!
while st <= en:
# 중간 값 구하기이
mid = (st + en) // 2
count = 0
for tree in trees:
if tree > mid: #톱날보다 긴 나무들만.
count += tree - mid # 톱날h만큼 자른다
if count >= M: # 구하려는 나무길이보다 크면 더 잘라야하므로
st = mid+1 # 범위를 오른쪽으로 좁힌다
else: # 구하려는 나무길이보다 작으면 덜 잘라야하므로
en = mid-1 # 범위를 왼쪽으로 좁힌다.
print(en)
'Coding Test > Baekjoon' 카테고리의 다른 글
5639. 이진 검색 트리 (0) | 2024.07.18 |
---|---|
2630. 색종이 만들기 (0) | 2024.07.11 |
3109. 뱀 (0) | 2024.07.10 |
2493. 탑 (0) | 2024.07.10 |
11866. 요세푸스 문제 0 (0) | 2024.07.10 |
블로그의 정보
농담곰담곰이의곰담농
브이담곰