[백준] 14400. 편의점2

원숭2·2022년 2월 23일
0

백준

목록 보기
47/54
post-thumbnail

문제

풀이

  1. 각 점들의 거리의 합을 최소로 하기 위해서는, 주어진 점들을 x, y에 대해 각각 정렬 후 그 중간값을 취하면 됨.
  2. sort함수와 lambda식을 사용하여 x,y에 대해 각각 정렬 후, 그 중간값을 mid_x, mid_y에 저장함.
  3. 문제에서 주어진 거리 구하는 식 대로 계산 후 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()

0개의 댓글