> 알고리즘 문제 풀이/BOJ
*2110-공유기 설치 (python, 파이썬)
bky373
2020. 10. 15. 10:31
- 어려운 문제였다.
- 이진 탐색을 활용하는 문제였는데, 아직 이진 탐색을 구현하는 게 어색하고, 적용하는 방법도 어렵다.
문제를 제대로 소화하려면 반복 학습과 연습이 필요하겠다.
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)