문제: 2차원 좌표 평면 위에 있는 점 3개 P1, P2, P3가 주어진다. P1, P2, P3를 순서대로 이은 선분이 어떤 방향을 이루고 있는지 구하는 프로그램을 작성하시오.
---
입력: 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다.
---
기하 알고리즘의 기초가 되는 CCW 알고리즘을 사용하는 문제.
*CCW(Counter Clock Wise) 알고리즘이란?
평면에 놓여 있는 세 점의 위치관계를 파악할 수 있는 알고리즘이다. 세 점의 연결이 반시계 방향인지, 시계 방향인지, 일직선인지를 판별할 수 있다. 벡터의 외적을 구하는 공식을 활용한다.
아래는 답안 코드이다.
# ccw 알고리즘
# 세 점의 방향성을 판단하는데 사용되는 알고리즘임
def ccw(x1, x2, x3, y1, y2, y3):
return (x1 * y2 + x2 * y3 + x3 * y1) - (y1 * x2 + y2 * x3 + y3 * x1)
x1, y1 = map(int, input().split())
x2, y2 = map(int, input().split())
x3, y3 = map(int, input().split())
result = ccw(x1, x2, x3, y1, y2, y3)
if result == 0:
print(0)
elif result > 0:
print(1)
else:
print(-1)
tree 정리 (0) | 2023.04.12 |
---|---|
[세그먼트 트리] 백준 12846: 무서운 아르바이트 (0) | 2023.04.02 |
[다익스트라] 백준 1753: 최단경로 (0) | 2023.02.27 |
[그래프탐색] 백준 16236: 아기 상어 (0) | 2023.02.15 |
[스택] 백준 2504: 괄호의 값 (0) | 2023.02.13 |
댓글 영역