https://www.acmicpc.net/problem/17371
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 |
댓글