[BOJ 1485, Python] 정사각형

TraceofLight·2023년 2월 25일
0

ProblemSolving

목록 보기
11/21
post-thumbnail

문제 링크

BOJ 1485

분류

기하학(geometry), 정렬(sorting)

설명

정사각형 판별을 해당 절차를 통해서 진행하면 된다.

  1. 4개의 점을 잇는 6개의 변의 길이를 전부 확인
  2. 정렬
  3. 앞 4개의 길이가 같은지 확인
  4. 뒷 2개가 정사각형의 대각선 길이로 적합한지 확인
  5. 전부 만족한 경우만 정사각형을 그릴 수 있는 것으로 처리

풀이 코드

# 정사각형

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)
profile
24시간은 부족한 게 맞다

0개의 댓글