문제풀이/백준(Boj) 문제풀이

[백준][이분 탐색] - 1654. 랜선 자르기

얄루몬 2022. 7. 8. 19:22

문제 풀이

k, n = map(int,input().split())
line = [int(input()) for _ in range(k)]

lt = 1
rt = max(line)
res = 0

while lt <= rt:
    mid = (lt + rt) // 2
    s = 0
    for i in line:
        s += i//mid
    if s >= n:
        lt = mid + 1
        res = mid
    else:
        rt = mid - 1
print(res)
  • 이 경우엔 길이가 더 작아도 나누면 0이기 때문에 조건에 상관 없이 s 값을 전부 다 구해서 원하는 랜선 갯수가 나오는지 확인한다.
  • 랜선 갯수가 더 많은 경우여도 같은 경우로 생각하기 때문에 계속해서 살펴보며 진행한다.