CodingTest/Baekjoon

[baekjoon] 백준 11758번(파이썬): CCW

JunJangE 2022. 6. 12. 01:50

문제

 

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

알고리즘

- 벡터의 외적을 통해 시계 방향인지 아닌지를 판별한다.

코드

import sys

p = [list(map(int, sys.stdin.readline().split())) for _ in range(3)]


v1 = [p[1][0] - p[0][0], p[1][1] - p[0][1]] # p1 -> p0
v2 = [p[2][0] - p[1][0], p[2][1] - p[1][1]] # p2 -> p1
func = v1[0] * v2[1] - v1[1] * v2[0] # 벡터 외적

# 외적이 양수이면 sin < 180
if func > 0:
    print(1)

# 외적이 양수이면 sin > 180
elif func < 0:
    print(-1)

# 외적이 양수이면 sin == 180
else:
    print(0)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com