- 어려운 문제였다.
- 이진 탐색을 활용하는 문제였는데, 아직 이진 탐색을 구현하는 게 어색하고, 적용하는 방법도 어렵다.
문제를 제대로 소화하려면 반복 학습과 연습이 필요하겠다.
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)
'> 알고리즘 문제 풀이 > BOJ' 카테고리의 다른 글
1991-트리 순회 (python, 파이썬) (0) | 2020.10.15 |
---|---|
*1939-중량제한 (python, 파이썬) (0) | 2020.10.15 |
17389-보너스 점수 (python, 파이썬) (0) | 2020.10.14 |
17269-이름궁합 테스트 (python, 파이썬) (0) | 2020.10.14 |
10539-수빈이와 수열 (python, 파이썬) (0) | 2020.10.14 |
댓글