[BOJ 1485, Python] 正方形
BOJ 1485,“正方形”问题的 Python 解法
题目链接
分类
几何(geometry), 排序(sorting)
说明
通过该流程即可判断是否为正方形。
- 检查连接4个点的6条边的长度
- 排序
- 检查前4条边的长度是否相同
- 检查后2条边是否符合正方形的对角线长度
- 仅当所有条件均满足时,才判定为可绘制正方形
解法代码
# 정사각형
import sys
from math import sqrt, isclose
from itertools import combinations
input = sys.stdin.readline
def distance(coord_1: list, coord_2: list) -> int:
return sqrt(pow(coord_1[0] - coord_2[0], 2) + pow(coord_1[1] - coord_2[1], 2))
testcase = int(input())
output = []
for _ in range(testcase):
is_square = True
coord_info = []
for _ in range(4):
coord_info.append(list(map(int, input().split())))
edge_info = []
for edge_distance in combinations(coord_info, 2):
edge_info.append(distance(edge_distance[0], edge_distance[1]))
edge_info.sort()
for idx in range(1, 4):
if not isclose(edge_info[0], edge_info[idx]):
is_square = False
break
if is_square:
for idx in range(4, 6):
if not isclose(pow(edge_info[0], 2) * 2, pow(edge_info[idx], 2)):
is_square = False
break
if is_square:
output.append(1)
else:
output.append(0)
for result in output:
print(result)
댓글 작성
게시글에 대한 의견을 남겨 주세요.