1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import sys
input = sys.stdin.readline
N, M, L = map(int, input().split())
arr = [0] + list(map(int, input().split())) + [L] # ...!! 0과 끝값까지 고려를 해야한다..!
arr.sort()
def bin_search(arr):
start, end = 1, L
answer = 0
while start <= end:
cnt = 0
mid = (start + end) // 2
for i in range(1, len(arr)):
if arr[i] - arr[i-1] > mid:
cnt += (arr[i] - arr[i-1] - 1) // mid # -1을 안하면 휴개소 포함
if cnt > M:
start = mid + 1
else:
answer = mid
end = mid - 1
return answer
print(bin_search(arr))
|
cs |
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[DP] BOJ 1509 펠린드롬 분할 (0) | 2023.08.03 |
---|---|
[DP] BOJ 10942 펠린드롬? (0) | 2023.08.01 |
[수학] BOJ 1111 IQ Test (0) | 2023.07.20 |
[BFS] BOJ 13859 숨바꼭질 3 (0) | 2023.07.20 |
[정렬] BOJ 18869 멀티버스 Ⅱ (0) | 2023.07.18 |