본문 바로가기
Algorithm/Python

[Python] 백준 - 2805번 나무 자르기(Binary Search)

by 힘팽 2022. 3. 1.

◈ 오류 정정 및 피드백 환영

 

2805번: 나무 자르기

첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보

www.acmicpc.net


🔎문제 분석

랜선이 아닌 나무를 자를 뿐 랜선 자르기와 동일하다. 마찬가지로 이분탐색(Binary Search)으로 접근하면 된다.

 

[Python] 백준 - 1654번 랜선 자르기(Binary Search)

◈ 오류 정정 및 피드백 환영 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000

notepad-for-hp.tistory.com


import sys
input = sys.stdin.readline
k, n = map(int, input().split())
a = list(map(int, input().split()))

l = 1
r = max(a)
while l<=r:
    mid = (l+r)//2
    cnt = sum(map(lambda x: x-mid if x-mid > 0 else 0, a))
    if cnt >= n:
        l = mid+1
    else:
        r = mid-1
print(r)

댓글