처음에 그냥 생각나는 대로 코드가 쳐지는 대로 문제를 풀었다. 단순히 입력받고 전체 집의 위치 마다 안테나를 설치해가며 거리를 비교했다. 그 후 설치한 위치마다의 안테나와 집의 거리 차이를 리스트에 저장한 뒤 거리 순으로 정렬 후 집의 위치별로 정렬해서 가장 앞의 값을 답으로 냈는데 시간 초과가 났다.
오답코드
import sys
input = sys.stdin.readline
n = int(input())
home = list(map(int,input().split()))
home.sort()
result = 100000
point = []
for i in home:
temp = 0
for j in home:
temp += (abs(j-i))
if result >= temp:
result = temp
point.append([temp,i])
point.sort(key=lambda x : (x[0],x[1]))
print(point[0][1])
다시금 천천히 생각해보니 결국 그냥 중간에 설치하면 거리가 최솟값이 되는거 아닌가 라는 생각이 들었다. 그래서
1. 그냥 집 위치들을 정렬
2. 그 중 중간값을 출력
때로는 복잡하게 생각하지말고 간단하게 문제를 보는 것도 문제를 푸는 능력이라는 것을 다시금 깨닫는 문제였다.
정답코드
import sys
input = sys.stdin.readline
n = int(input())
home = list(map(int,input().split()))
home.sort()
print(home[(n-1)//2])