[BOJ 1485, Python] 정사각형

[BOJ 1485, Python] 정사각형

BOJ 1485, "정사각형" 문제의 Python 풀이

문제 링크

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)

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0