소스코드

import sys
input = sys.stdin.readline

N,C = map(int, input().strip().strip())
X = sorted([int(input()) for _ in range(N)])
result = 0 # 결과 : 가장 인접한 두 공유기 사이의 최대 거리

start, end = 1, (X[-1] - X[0])
while start <= end:
	mid = (start + end) // 2
	mid_value = X[mid] # 공유기 간 최소 거리 후보
	
	# 거리를 늘려나가기
	last_installed = X[0]
	count = 1 # 현재 거리로 설치된 공유기 개수 : 첫번째 집에 공유기 설치
	for i in range(1,N):
		if (X[i] - last_installed) >= mid_value:
			last_installed = X[i]
			count += 1
		
	# 카운트된게 목표했던 것보다 크다 -> 더 늘려봐도 된다
	if count >= C:
		start = mid + 1
		result = mid # 조건을 만족할 때 갱신
	else:
		end = mid - 1

print(result)	

풀이