코딩테스트/BOJ

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

박소민 2025. 9. 26. 00:32
1654.랜선 자르기

 

  • 내 풀이
    • 랜선 길이를 mid로 잡고 
    • 만들어질 수 있는 갯수 체크
    • 필요한 n개보다 많거나 같으면 -> 현재 랜선 길이 mid가 너무 짧은 것
      • max값으로 저장 후
      • l= mid+1
    • 필요한 갯수보다 적으면 -> 현재 랜선길이 mid가 너무 긴 것
      • r=mid-1
    • 📍주의
      • 처음 랜선길이 l=0 으로 잡으면 zeroDivizonError 날 수 있음
      • l=1 로 잡아야함
k, n = map(int, input().split())
lans = [int(input()) for _ in range(k)]

l = 0
r = max(lans)

ans = 0
while l <= r:
    mid = (l+r)//2

    cnt = 0
    for lan in lans:
        cnt += (lan//mid)

    if cnt >= n:
        ans = max(ans, mid)
        l = mid+1
    else:
        r = mid-1

print(ans)

 

'코딩테스트 > BOJ' 카테고리의 다른 글

[백준][DP] RGB 거리  (0) 2026.02.16
[백준][DP] 설탕 배달  (0) 2026.02.16
[백준][다익스트라] 1753. 최단 경로  (0) 2025.09.26
[백준][DP] 2839. 설탕 배달  (0) 2025.09.22
[백준][이분탐색] 10816. 숫자 카드2  (0) 2025.09.04