BOJ 2110 공유기 설치

LONGNEW·2021년 1월 1일
0

BOJ

목록 보기
18/333

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)


코드가 다른게 없으면 결과가 같아야 하는데 왜 틀리는지...
깃 허브 코드 업데이트 되는거 봐도 라인 똑같고 공백 똑같은데 왜 틀리는지 모르겠네....

0개의 댓글