미소를뿌리는감자의 코딩

[백준 2024/02/24] 1645번 랜선 자르기 본문

코딩 테스트/백준

[백준 2024/02/24] 1645번 랜선 자르기

미뿌감 2024. 2. 25. 03:37
728x90

https://www.acmicpc.net/problem/1654

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그

www.acmicpc.net

 

1. 접근 방법

자를 수 있는 제일 작은 랜선의 길이 = 1

자를 수 있는 제일 큰 랜선의 길이 = max(lines) 가 될 것이다.

이후 이를 기준으로 binary search를 진행하였다.

 

2. 코드

def max_length(lines, n):
    max_line = max(lines)
    min_line = 1

    while min_line <= max_line:
        cut = (min_line + max_line) // 2
        total = 0
        for line in lines:
            total += line//cut

        if total < n:
            max_line = cut -1
        else:
            min_line = cut + 1

    return max_line


def main():
    k, n = map(int, input().split())
    lines = []

    for _ in range(k):
        lines.append(int(input()))

    print(max_length(lines, n))


if __name__ == "__main__":
    main()
728x90