[백준] 1064번 평행사변형

거북이·2023년 1월 8일
0

백준[실버5]

목록 보기
82/114
post-thumbnail

💡문제접근

입력값으로 점 A, B, C의 좌표가 주어져있다. 이 때, 점 A, B, C가 일직선 상에 존재한다면 평행사변형을 만들 수가 없다. 따라서 직선 AB의 기울기와 직선 AC의 기울기가 같다는 것을 수학적으로 바꿔 표현하면 ZeroDivisionError을 피하면서 문제의 조건을 충족시켜줄 수 있다.

💡코드(메모리 : 32540KB, 시간 : 40ms)

import math
Xa, Ya, Xb, Yb, Xc, Yc = map(int, input().split())

ac_length = math.sqrt((Xa-Xc)**2 + (Ya-Yc)**2)
ab_length = math.sqrt((Xa-Xb)**2 + (Ya-Yb)**2)
bc_length = math.sqrt((Xb-Xc)**2 + (Yb-Yc)**2)

round1 = (ac_length + ab_length) * 2
round2 = (ac_length + bc_length) * 2
round3 = (ab_length + bc_length) * 2
max_round = max(round1, round2, round3)
min_round = min(round1, round2, round3)

if ((Ya - Yc) * (Xa - Xb)) == ((Ya - Yb) * (Xa - Xc)):
    print(-1.0)
else:
    print(max_round - min_round)

💡소요시간 : 6m

0개의 댓글