Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Archives
Today
Total
관리 메뉴

Marryakirise's coding

[Geometry] 백준 Gold5 11758번 CCW 본문

Algorithm/Baekjoon

[Geometry] 백준 Gold5 11758번 CCW

kirise 2023. 3. 28. 20:47

문제

https://www.acmicpc.net/problem/11758

 


설계 ✨

점을 찍는 순서대로 시계방향과 반시계방향을 결정하는 문제이다.

먼저, 점 p1, p2를 지나가는 직선 그래프를 그려서 생각했다.

이 그래프 위쪽 영역에 점 p3를 찍으면 무조건 반시계방향이고,  

이 그래프 아래쪽 영역에 점 p3를 찍으면 무조건 시계방향임을 알아냈다. 

 

그래프의 위쪽 점 p3는 점 p1, p2과 삼각형을 만들었을 때 높이가 '+'이고,

그래프의 아래쪽 점 p3는 점 p1, p2과 삼각형을 만들었을 때 높이가 '-'이다.

따라서 세 점의 좌표를 알 때, 삼각형의 넓이를 구하는 공식 (신발끈 공식)을 이용하여 +,- 방향성을 구할 수 있다. 

 

 

 

https://tgs05016.tistory.com/

 
import sys

# 삼각형 공식
def ccw(p1, p2, p3):
    return (p1[0]*p2[1] + p2[0]*p3[1] + p3[0]*p1[1] - (p2[0]*p1[1] + p3[0]*p2[1] + p1[0]*p3[1]))

box = []
for i in range(3):
    box.append(tuple(map(int,sys.stdin.readline().split())))

result = ccw(box[0], box[1], box[2])

if result < 0:
    print(-1)
elif result > 0:
    print(1)
else:
    print(0)
Comments