while (1): study();

[백준/18310] 안테나 본문

알고리즘

[백준/18310] 안테나

전국민실업화 2021. 6. 30. 17:56
728x90

출처: https://www.acmicpc.net/problem/18310\

 

18310번: 안테나

첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다.

www.acmicpc.net

 

처음에 이진탐색을 이용해 접근하려 했으나 아이디어만 떠올릴 수 있다면 쉬운 문제이다. 역시 문제를 풀기 전에 손보다는 머리를 움직이는 것이 중요하다는 것을 다시금 느끼게 된다.

 

결과적으로 최적의 안테나 설치 장소는 중앙값이다. 중앙에서 멀어지면 멀어질수록 거리가 멀어진다는 것을 휴리스틱하게 확인할 수 있으며, 생각을 조금만 해봐도 그렇다. 소스코드는 다음과 같이 간단하게 작성할 수 있다.

 

n = int(input())
array = list(map(int, input().split()))

answer = sorted(array)[(n - 1) // 2]
print(answer)
728x90
Comments