이분탐색 단계를 끝내자~
이분 탐색 단계
흔히 parametric search라고도 부르는, 이분 탐색을 응용하여 최솟값이나 최댓값을 찾는 테크닉을 배우는 문제
www.acmicpc.net
2110
⚠︎ 공유기 설치
티어 : 🥇4
분류 : 이분탐색
에..오
라우터 사이사이가 길게 말이지
으음
맨 양끝에 놓고 일단
반반 잘라가면서 반에 제일 가까운 집에다가 하나씩 놓으면?
근데그럼 홀짝일 때 잘라야 하는 게 다른데
그럼
홀수 개 남앗으면 하나 남은 거리 가운데에다 놓고
짝수 개 남앗으면 두개 띵띵
?아닌데
공유기를 중심으로 생각하지 말고
거리를 이분탐색하면서 답을 구한다고 하면~
오토마타공부하고다시생각해봄
졸리다
거리 크게 하고
하나씩 보면서 기준거리 넘는 애들 하나하나 세면서
라우터 개수가 C보다 크거나 같으면 S E 조절해서 거리 조정하기
import sys
N,C = map(int,sys.stdin.readline().split())
router = []
for _ in range(N): router.append(int(sys.stdin.readline()))
router.sort()
def binary_search(array, start, end):
while start <= end:
mid = (start + end) // 2
current = array[0]
router_count = 1
for i in range(1, len(array)):
if array[i] >= current + mid: # 거리가 mid 이상인 집에 설치
router_count += 1
current = array[i]
if router_count >= C: ## 설치된 라우터 개수가 더 많으면 거리를 늘릴 수 있단 것
global answer
start = mid + 1
answer = mid #일단 가능한상태
else: # 설치된 라우터 개수가 작으면 거리를 더 줄여야 함
end = mid - 1
start = 1
end = router[-1] - router[0]
answer = 0
binary_search(router, start, end)
print(answer)
..
난 rock이다 ~~
깡깡
'📊 Algorithm > BOJ' 카테고리의 다른 글
⚠︎ 백준 - 4134 다음 소수 (3) | 2024.05.16 |
---|---|
⚠︎ 백준 - 2485 가로수 (1) | 2024.05.14 |
⚠︎ 백준 - 9251 LCS (0) | 2024.04.12 |
⚠︎ 백준 - 24060 알고리즘 수업 - 병합 정렬 1 👩🏻🏫 (0) | 2024.04.11 |
⚠︎ 백준 - 4779 칸토어 집합🏠 (0) | 2024.04.10 |