2805: 나무 자르기 && 1654: 랜선 자르기

ewillwin·2023년 10월 10일
0

Problem Solving (BOJ)

목록 보기
215/230

문제 링크

2805: 나무 자르기


구현 방식

  • 이분탐색으로 풀어주었다

코드

import sys

N, M = map(int, sys.stdin.readline()[:-1].split())
tree = list(map(int, sys.stdin.readline()[:-1].split()))

start = 1; end = max(tree)
while start <= end:
    mid = (start+end)//2

    sum_ = 0
    for t in tree:
        if t > mid: sum_ += t - mid
    
    if sum_ >= M: start = mid + 1
    else: end = mid - 1
print(end)


문제 링크

1654: 랜선 자르기


구현 방식

  • 이분탐색으로 풀어주었다

코드

import sys

K, N = map(int, sys.stdin.readline()[:-1].split())
LAN = [int(sys.stdin.readline()[:-1]) for k in range(K)]; LAN.sort()

left, right = 1, max(LAN)
while left <= right:
    mid = (left+right)//2

    cnt = 0
    for L in LAN:
        cnt += L // mid

    if cnt >= N: left = mid+1
    else: right = mid-1
print(right)
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글