일직선 상의 마을에 여러 채의 집이 위치해 있다. 이중에서 특정 위치의 집에 특별히 한 개의 안테나를 설치하기로 결정했다. 효율성을 위해 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되도록 설치하려고 한다. 이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다.
집들의 위치 값이 주어질 때, 안테나를 설치할 위치를 선택하는 프로그램을 작성하시오.
백준 링크 | https://www.acmicpc.net/problem/18310
풀이랄 것도 없다..!
당연히 안테나가 중앙에 위치하는 것이 모든 집까지의 거리의 총 합이 최소가 될 것이다.
따라서, 중앙의 위치에 안테나를 두면 되는 것-!
집이 홀수 개이면 딱 중앙에 둘 수 있고, 짝수 개이면 중앙에서 왼쪽에 위치하는 지점에 안테나를 두면 된다. ( (집의 개수)/2에서 버림한 값)
n = int(input())
house = sorted(list(map(int, input().split()))) # 집 정보 입력받고 정렬
if n%2==0: # 짝수
print(house[n//2-1])
else: # 홀수
print(house[n//2])
정렬에서는 수학적 직관력이 젤 필요로 되는 것 같다!