https://www.acmicpc.net/problem/11758
11758번: CCW
첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다.
www.acmicpc.net
1. 세 점에 대해 p1, p2 에 대한 첫번째 벡터, p2, p3 에 대한 두 번째 벡터를 구한다.
2. 구한 두 벡터에 대한 외적을 구하고, 구한 값의 부호를 통해 회전하는 방향을 확인한다.
dot = list(tuple(map(int,input().split())) for _ in range(3))
def CrossProduct(v1,v2):
v1_x, v1_y = v1
v2_x, v2_y = v2
return (v1_x*v2_y- v2_x*v1_y)
v1 = (dot[1][0]- dot[0][0],dot[1][1] - dot[0][1])
v2 = (dot[2][0]-dot[1][0], dot[2][1] - dot[1][1])
direction = CrossProduct(v1,v2)
if direction > 0:print(1)
elif direction < 0: print(-1)
else: print(0)
'알고리즘 공부 > 수학' 카테고리의 다른 글
[백준/수학] 6588번: 골드바흐의 추측 (0) | 2022.10.02 |
---|---|
[백준/수학] 1094번: 막대기 (1) | 2022.10.02 |
[백준/수학] 11689번: GCD(n,k)=1 (0) | 2022.09.18 |
[백준/수학] 3360번 깡총깡총 (0) | 2022.03.18 |
[백준/수학] 7977번 크리스 마틴 (0) | 2022.03.12 |