앎을 경계하기

Programming/Algorithm

백준 #1654 - 랜선 자르기 (python3)

양갱맨 2019. 11. 17. 03:45

def solution(k,n, arr):
    high = arr[0]
    low = 0
    result = 0

    while low <= high:
        mid = (high + low) // 2
        cnt = 0
        if mid == 0: return 1
        for val in arr:
            cnt += val//mid
            if cnt >= n and mid > result:
                result = mid
                break

        if cnt < n:
            high = mid - 1
        else:
            low = mid + 1

    return  result

if __name__ == "__main__":
    K, N = map(int,input().split())
    arr = []

    for _ in range(K):
        arr.append(int(input()))
    arr.sort(reverse = True)

    print(solution(K, N, arr))

'Programming > Algorithm' 카테고리의 다른 글

백준 #2022 - 사다리 (python3)  (0) 2019.11.17
백준 #2805 - 나무 자르기 (python3)  (0) 2019.11.17
백준 #1890 - 점프  (0) 2019.11.09
백준 #2579 - 계단 오르기  (0) 2019.11.09
백준 #1476 - 날짜 계산  (0) 2019.11.09