문제
풀이
공유기 사이의 거리를 적어도 $d$ 이상이 되게끔 $C$개를 설치할 수 있는지 판단해 봅시다.
이때 공유기를 최대한 많이 설치하는 전략은 0번에 하나를 두고 거리가 $d$ 이상이 되는 지점마다 공유기를 설치하는 것입니다.
따라서 $O(N)$에 판단할 수 있고, 이분 탐색을 통해 $O(N\log (\max(x_i) - \min(x_i)))$의 시간 복잡도로 해결할 수 있습니다.
코드
1 | |
사실 스크류바 안먹은지 1년 넘었습니다.
공유기 사이의 거리를 적어도 $d$ 이상이 되게끔 $C$개를 설치할 수 있는지 판단해 봅시다.
이때 공유기를 최대한 많이 설치하는 전략은 0번에 하나를 두고 거리가 $d$ 이상이 되는 지점마다 공유기를 설치하는 것입니다.
따라서 $O(N)$에 판단할 수 있고, 이분 탐색을 통해 $O(N\log (\max(x_i) - \min(x_i)))$의 시간 복잡도로 해결할 수 있습니다.
1 | |