본문 바로가기
> 알고리즘 문제 풀이/BOJ

*2110-공유기 설치 (python, 파이썬)

by bky373 2020. 10. 15.

- 어려운 문제였다.
- 이진 탐색을 활용하는 문제였는데, 아직 이진 탐색을 구현하는 게 어색하고, 적용하는 방법도 어렵다.
  문제를 제대로 소화하려면 반복 학습과 연습이 필요하겠다.

import sys

n, c = map(int, input().split())
arr = []

for _ in range(n):
    arr.append(int(sys.stdin.readline()))
arr = sorted(arr)

start = arr[1] - arr[0]
end = arr[-1] - arr[0]
result = 0

while start <= end:
    mid = (start+end) // 2
    value = arr[0]
    count = 1
    for i in range(1, n):
        if arr[i] >= value + mid:
            value = arr[i]
            count += 1
    if count >= c:
        start = mid + 1
        result = mid
    else:
        end = mid - 1
print(result)

댓글