티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/11758
2. 풀이
- 세 점 P1, P2, P3가 주어졌을 때, 이들을 순서대로 이은 선분이 어떤 방향을 이루는지 판단하는 문제다.
- 외적(벡터의 곱)으로 접근했다.
- 두 벡터의 외적은 걔네들이 이루는 평행사변형의 넓이를 나타내는데, 외적의 부호가 방향을 알려준다는 점을 활용했다.
- 공식도출: 외적 = (x2-x1) × (y3-y1) - (y2-y1) × (x3-x1)
- 판단기준
- 외적 > 0: 반시계방향 -> 1
- 외적 < 0: 시계방향 -> -1
- 외적 = 0: 일직선 -> 0
- P3가 P1에서 P2로 가는 벡터의 왼쪽에 있으면 반시계, 오른쪽에 있으면 시계방향?
def ccw(p1, p2, p3):
x1, y1 = p1
x2, y2 = p2
x3, y3 = p3
# 여기서 외적 계싼
cross_product = (x2-x1) * (y3-y1) - (y2-y1) * (x3-x1)
if cross_product > 0:
return 1 # 반시계방향
elif cross_product < 0:
return -1 # 시계방향
else:
return 0 # 일직선
p1 = tuple(map(int, input().split()))
p2 = tuple(map(int, input().split()))
p3 = tuple(map(int, input().split()))
result = ccw(p1, p2, p3)
print(result)
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 점근적표기
- 백준
- 배수
- 붙임성 좋은 총총이
- 데이터추상화
- 약수들의합
- 4779
- C99
- 약수
- 삼각형과세변
- 다음소수
- 알고리즘
- 27323
- 과제안내신분
- 베라의 패션
- 개발계발
- 브라우저뜻
- 브라우저
- 재귀함수원리
- SWLIfeCycle
- 25304
- python
- 직사각형
- 피보나치수5
- C언어
- 배수와약수
- 재귀케이스
- 파이썬
- 25314
- SW생명주기
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함