QA & Engineering Blog

A Blog about Quality · Automation · Engineering

🏠 홈으로

[Silver IV] 평행사변형 - 1064

문제 링크

성능 요약

메모리: 113112 KB, 시간: 120 ms

분류

기하학, 수학, 피타고라스 정리

문제 설명

평행사변형은 평행한 두 변을 가진 사각형이다. 세 개의 서로 다른 점이 주어진다. A(xA,yA), B(xB,yB), C(xC,yC)

이때, 적절히 점 D를 찾아서 네 점으로 평행사변형을 만들면 된다. 이때, D가 여러 개 나올 수도 있다.

만들어진 모든 사각형 중 가장 큰 둘레 길이와 가장 작은 둘레 길이의 차이를 출력하는 프로그램을 작성하시오. 만약 만들 수 있는 평행사변형이 없다면 -1을 출력한다.

입력

첫째 줄에 xA yA xB yB xC yC가 주어진다. 모두 절댓값이 5000보다 작거나 같은 정수이다.

출력

첫째 줄에 문제의 정답을 출력한다. 절대/상대 오차는 10-9까지 허용한다.

💡 Solutions

📄 평행사변형.py

ax, ay, bx, by, cx, cy = map(int, input().split())

if ((ax-bx)*(ay-cy)==(ay-by)*(ax-cx)):
    print(-1.0)
    exit(0)

ab_length = ((ax-bx)**2 + (ay-by)**2)**0.5
ac_length = ((ax-cx)**2 + (ay-cy)**2)**0.5
bc_length = ((bx-cx)**2 + (by-cy)**2)**0.5

length = [ab_length+ac_length, ab_length+bc_length, ac_length+bc_length]
result = max(length) - min(length)
print(2*result)