[알고리즘] 백준 1654 랜선 자르기 파이썬

CHOI IN HO·2024년 3월 18일
0

코딩테스트

목록 보기
66/74

풀이

이진탐색을 활용해 문제를 풀어준다. 이때 count()함수를 따로 만들어 생기는 전선의 갯수를 리턴하고 가장 큰 라인의 절반 값부터 1씩 줄어들게 만들어 값을 구한다

import sys

n, k = map(int, sys.stdin.readline().split())
lines = [int(sys.stdin.readline()) for _ in range(n)]

def count(lines, target):
    count = 0
    for i in lines:
        count+= i // target
    return count

def ejin(lines, t_c):
    start, end = 1, max(lines)
    result = 0
    while start <= end:
        mid = (start + end) // 2
        if count(lines, mid) >= t_c:
            result = mid
            start = mid + 1
        else: end = mid-1

    return result

print(ejin(lines, k))
profile
개발자기 되기 위해선 무엇이든!

0개의 댓글