1654번 : 랜선 자르기

김민관·2021년 10월 9일
0

백준_Silver

목록 보기
23/57

문제보기

import sys

# k: 가지고있는 랜선 개수, n: 필요한 랜선 개수
k, n = map(int, sys.stdin.readline().split())
lines = []

# 랜선의 길이들 입력
for i in range(k):
    lines.append(int(sys.stdin.readline()))

start = 1
end = max(lines)

result = 0
while start <= end:
    mid = (start + end) // 2
    line = 0
    # print(start, end, mid)
    # mid에 따라 만들어진 랜선 개수
    for i in lines:
        line += i // mid

    if line < n:
        end = mid - 1
    else:
        result = mid
        start = mid + 1

print(result)

코드 설명

  • 이진 탐색 통해서 원하는 길이 랜선 갯수만큼 만들어내는 mid값을 찾아내기

포인트

start를 1로 하지안고 평소처럼 0으로 하면 중간에 mid가 0이 되어 zerodivision exception 발생.

profile
게임 개발일지 & IT 소식들 공유

0개의 댓글

관련 채용 정보