Adventure Time - Finn 3
본문 바로가기
코테연습/python

마구간 정하기(결정알고리즘)

by hyun9_9 2026. 4. 18.

 N개의 마구간이 수직선상에 있습니다. 각 마구간은 x1, x2, x3, ......, xN의 좌표를 가지며, 마 구간간에 좌표가 중복되는 일은 없습니다. 현수는 C마리의 말을 가지고 있는데, 이 말들은 서로 가까이 있는 것을 좋아하지 않습니다. 각 마구간에는 한 마리의 말만 넣을 수 있고, 가장 가까운 두 말의 거리가 최대가 되게 말을 마구간에 배치하고 싶습니다. C마리의 말을 N개의 마구간에 배치했을 때 가장 가까운 두 말의 거리가 최대가 되는 그 최대 값을 출력하는 프로그램을 작성하세요.

 

import sys
# sys.stdin=open("input.txt","rt")
n,m = map(int,input().split())
# n = int(input())
# arr = list(map(int,input().split()))
# n = input()
# arr = [list(map(int,input().split())) for _ in range(n)]
arr = [int(input()) for _ in range(n)]

arr = sorted(arr)

lt = 1
rt = max(arr)

res = 0

while lt <= rt:
    mid = (lt+rt) //2
    a = 1
    cnt = 1
    for i in arr:
        if mid <= i - a:
            cnt+=1
            a = i
  
    if m <= cnt:
        res = mid
        lt = mid +1
    else:
        rt = mid -1



print(res)

'코테연습 > python' 카테고리의 다른 글

회의실 배정(그리디)  (0) 2026.04.20
게임 이벤트 유저 분류  (0) 2026.04.19
뮤직비디오(결정알고리즘)  (0) 2026.04.18
랜선자르기(결정알고리즘)  (0) 2026.04.16
이분검색  (0) 2026.04.16