https://www.acmicpc.net/problem/2110
시간 2초, 메모리 128MB
input :
집의 개수 N(2 <= N <= 200,000) 공유기의 개수 C (2 <= C <= N)
집의 좌표를 나타내는 Xi(1 <= Xi <= 1,000,000,000)
output :
가장 인접한 두 공유기 사이의 최대 거리를 출력
가장 끝 2자리, 중간, 중간과 그 사이........
직접 찾지 말고... 공유기가 존재할 최대 거리를 생각해서 탐색 하자.
이진탐색으로 거리를 집중해서 계산.
매우 짜증 나네.....
코드를 작성 한 후에 나는 조건에 속하는 것을 원하기 때문에.
C개 이상을 설치한 곳에서 result 변수를 만들어서 그 값을 저장하자.
import sys
n, c = map(int, sys.stdin.readline().split())
array = []
for _ in range(n):
array.append(int(sys.stdin.readline()))
array.sort()
start = 1
end = array[-1] - array[0]
result = 0
while start <= end:
mid = (start + end) // 2
value = array[0]
cnt = 1
for i in range(len(array)):
if array[i] >= value + mid:
value = array[i]
cnt += 1
if cnt >= c:
start = mid + 1
result = mid
else:
end = mid - 1
print(result)
코드가 다른게 없으면 결과가 같아야 하는데 왜 틀리는지...
깃 허브 코드 업데이트 되는거 봐도 라인 똑같고 공백 똑같은데 왜 틀리는지 모르겠네....