1654 - 랜선 자르기

LeeKyoungChang·2022년 3월 11일
0

Algorithm

목록 보기
62/203
post-thumbnail

📚 1654 - 랜선 자르기

랜선 자르기

 

이해

워낙 설명이 잘되어 있는 곳 : 참고자료 를 읽어보면 문제를 어떻게 풀어야할지 이해가 된다.

 

소스

import sys

read = sys.stdin.readline


K, N = map(int, read().split())
arr = [int(read()) for _ in range(K)]
start, end = 1, max(arr) #이분탐색 처음과 끝위치


_max = max(arr)

# 반드시 max에서 +1 값이어야 한다.
_max += 1

_min = 0 # 탐색 길이 최솟값
_mid = 0 # 탐색 길이 중간값

while _min < _max:

    # 범위 내에서 중간 길이를 구한다.
    _mid = (_max + _min) // 2

    count = 0

    # arr[idx] // 중간 길이로 잘라서 총 몇개가 만들어지는지를 구한다.
    for idx in range(len(arr)):
        count += (arr[idx] // _mid)

    if count < N:
        _max = _mid
    else:
        _min = _mid + 1


print(_min-1)

 

채점 결과

스크린샷 2022-03-10 오후 11 31 16

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글