[코테] 이진 탐색 - 공유기 설치

uuuu.jini·2022년 12월 4일
0

공유기 설치


2110

도현이의 집 N개가 수직선 위에 있다. 각각의 집의 좌표는 x1, ..., xN이고, 집 여러개가 같은 좌표를 가지는 일은 없다.

도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 한다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게 하여 설치하려고 한다.

C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하시오.

입력

  • 집의 개수 N, 공유기의 개수 C
  • N개의 집의 좌표

출력

  • 가장 접한 두 공유기 사이의 최대 거리 출력

풀이


므쨍이 글

  • 이분탐색을 이용하여 문제 해결
  • start, end, mid 변수값들은 공유기 사이 거리로 정한다.
  • start는 공유기 사이의 최소 거리로, end는 공유기 사이의 최대 거리로 잡고 이분 탐색을 시작한다.
  • 집의 좌표를 담은 house 리스트를 정렬한 후 맨 첫 번째 집부터 공유기를 설치하는데 이때 공유기 사이의 거리를 mid만큼 잡는다.
  • 공유기를 설치한 횟수를 나타내는 count가 주어진 공유기 개수 C 이상이면 공유기 사이의 거리를 넓히고 (이때 공유기 사이 최대 거리를 나타내는 answer값을 mid로 갱신), C 미만이면 거리를 좁힌다.
profile
멋쟁이 토마토

1개의 댓글

comment-user-thumbnail
2022년 12월 4일

혹시 어디서 일하고 계세요?~

답글 달기