알고리즘/BOJ

[Python] 백준 17371: 이사

PIAI 2021. 9. 27. 22:18

https://www.acmicpc.net/problem/17371

 

17371번: 이사

$(\frac{2}{3}, \frac{1}{3})$으로 이사를 가면 가장 가까운 편의시설은 (0, 1)으로 거리는 $\frac{2\sqrt{2}}{3}$이고, 가장 먼 편의시설은 (-4, 1) 혹은 (4, -3)으로 거리는 둘 다 $\frac{10\sqrt{2}}{3}$이다. 두 거리의

www.acmicpc.net

1. 현재 좌표를 기준으로 가장 긴 선분을 찾는다. (가장 가까운 곳과 가장 먼 곳을 찾아야 하므로. 현재 지점이 가장 가까운 곳이고 또 다른 좌표가 가장 먼 곳이다.)

2. 이 선분들 중에서 가장 짧은 선분을 찾는다. 좌표는 그 선분 사이 아무 좌표나 가능하다.(직선일 때가 가장 최소의 길이므로 이 (x1, y1), (x2, y2) 기울기 사이의 모든 좌표든 가능하다.)

import math

def calc(a, b, c, d):
    return math.sqrt((a-c) ** 2 + (b-d) ** 2)

n = int(input())
pos = []
minn = 2147000000
x, y = 0, 0
for _ in range(n):
    pos.append(list(map(int, input().split())))

for x1, y1 in pos:
    maxx = 0
    for x2, y2 in pos:
        tmp = calc(x1, y1, x2, y2)
        if maxx < tmp:
            maxx = tmp
    if minn > maxx:
        minn = maxx
        x, y = x1, y1

print(x, y)