Replies: 1 comment 1 reply
-
|
이 문제 한창 백준 초창기때 벽을 느꼈던 문제.. 깔끔하게 잘 푸셨네용 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
문제
문제 : https://www.acmicpc.net/problem/2110
난이도 : 골드5
아이디어
집이 5개이고 공유기가 3개인 경우

C개의 공유기를 몇몇 집에 설치할 것인데 가장 인접한 공유기 사이의 거리를 최대가 되도록 설치할 것이다.
' 최대 ' 라는 키워드가 나왔으므로 이분탐색을 먼저 생각해보았다.
원래 문제
C개의 공유기를 설치했을 때, 가장 인접한 공유기 사이의 최대 거리는 얼마인가?
최대 인접 거리를 매개 변수 D로 설정 후 문제를 뒤집어서 Yes or No 문제로 바꾼다.
뒤집어서 만든 Yes or No 문제

두 공유기 사이 거리가 D일 때 공유기 C개를 설치할 수 있는가? Yes or No
Yes인 것 중 가장 큰 값이 정답이 될 것이다. (= 마지막 Yes)
Yes or No 문제 풀이
어떤 거리 D 만큼 거리를 둘 때, 공유기 C개를 설치할 수 있는 지 알기 위해서는 주어진 집들의 좌표를 정렬한 후에 제일 왼쪽 집부터 되는 대로 전부 설치해보는 방법을 사용한다.
D가 1일 경우
1 2 4 8 9
최대 5개의 공유기를 설치할 수 잇다.
D가 2일 경우
1 4 8, 1 4 9, 2 4 8, 2 4 9
최대 3개의 공유기를 설치할 수 있다.
D가 3일 경우
1 4 8, 1 4 9
최대 3개의 공유기를 설치할 수 있다.
이와같이 왼쪽부터 그냥 되는 대로 전부 설치해보면 어짜피 정렬이 된 상태라서 애초에 오른쪽 집으로 갈 수록 인접한 공유기의 거리가 짧아지기 때문이다. D만큼의 거리를 확보하기 위해서 제일 왼쪽집부터 설치해나가면서 가능한 공유기 설치 개수를 카운트한다.
시간 복잡도
구현
Beta Was this translation helpful? Give feedback.
All reactions