본문 바로가기
알고리즘/BOJ

[Python] 백준 17371: 이사

by PIAI 2021. 9. 27.

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)

'알고리즘 > BOJ' 카테고리의 다른 글

[Python] 백준 17070: 파이프 옮기기 1  (0) 2021.10.02
[Python] 백준 1132: 합  (0) 2021.09.29
[Python] 백준 1398: 동전문제  (0) 2021.09.27
[Python] 백준 2590: 색종이  (0) 2021.09.26
[Python] 백준 13975: 파일 합치기 3  (0) 2021.09.26

댓글