문제
풀이
- 각 점들의 거리의 합을 최소로 하기 위해서는, 주어진 점들을 x, y에 대해 각각 정렬 후 그 중간값을 취하면 됨.
- sort함수와 lambda식을 사용하여 x,y에 대해 각각 정렬 후, 그 중간값을 mid_x, mid_y에 저장함.
- 문제에서 주어진 거리 구하는 식 대로 계산 후 print함.
코드
import sys
def solution() :
n = int(sys.stdin.readline())
locations = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
mid_x = sorted(locations, key = lambda x : x[0])[n // 2][0]
mid_y = sorted(locations, key = lambda x : x[1])[n // 2][1]
res = 0
for l in locations :
res += (abs(mid_x - l[0]) + abs(mid_y - l[1]))
print(res)
solution()