( •̀ ω •́ )✧
BOJ 2110. 공유기 설치 (Gold 4) / 이분탐색 조건 설정 본문
🔎 BOJ 2110. 공유기 설치 (Gold 4)
https://www.acmicpc.net/problem/2110
2110번: 공유기 설치
첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가
www.acmicpc.net
💡 SOL
import sys
from bisect import bisect_left
input = sys.stdin.readline
N, C = map(int, input().split()) # N 집 수 C 공유기 수
X = [0] * N
for i in range(N):
X[i] = int(input())
X.sort()
left = 1
right = X[-1] - X[0]
ans = 1
middle = (left + right) // 2
while left <= right:
middle = (left + right) // 2
target = X[0]
cnt = 1
for i in range(1, len(X)):
if X[i] >= target + middle:
cnt += 1
target = X[i]
if cnt >= C:
left = middle + 1
ans = middle
else:
right = middle - 1
print(ans)
💭 TIL
# TIL
이분탐색 조건 설정하기 어려워........
다음에 다시 봐야지
'🤖 알고리즘' 카테고리의 다른 글
BOJ 18353. 병사 배치하기 (Silver 2) / 가장 긴 감소 수열 찾기 (0) | 2023.10.30 |
---|---|
BOJ 16118. 달빛 여우 (Python) / 다익스트라 (0) | 2023.08.31 |
BOJ 1789. 수들의 합 (0) | 2023.08.10 |
BOJ 1456. 거의 소수 (0) | 2023.04.06 |
BOJ 2800. 괄호 제거 (0) | 2023.03.29 |
Comments