반응형
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로 향하는 벡터와 P1에서 P3로 향하는 벡터를 구합니다.
2. 두 벡터를 외적 합니다.
3. 외적의 값이 0보다 작다면 시계방향, 0보다 크다면 반시계 방향, 0이라면 일직선상에 있는 경우입니다.
[ 소스코드 ]
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 31 | #include<iostream> using namespace std; pair<int, int> P[3]; pair<int, int> vect[2]; int main() { for (int i = 0; i < 3; i++) { int x, y; scanf("%d %d", &x, &y); P[i] = { x,y }; } vect[0] = { P[0].first - P[1].first, P[0].second - P[1].second }; vect[1] = { P[0].first - P[2].first, P[0].second - P[2].second }; int ans = vect[0].first * vect[1].second - vect[0].second * vect[1].first; if (ans > 0) { //반시계 printf("%d", 1); } else if (ans < 0) { //시계 printf("%d", -1); } else { //일직선 printf("%d", 0); } } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 5529번 - 저택 (C++) (0) | 2022.11.17 |
---|---|
[ 백준 ] 16933번 - 벽 부수고 이동하기 3 (C++) (0) | 2022.11.16 |
[ 백준 ] 15681번 - 트리와 쿼리 (C++) (0) | 2022.11.14 |
[ 백준 ] 7682번 - 틱택토 (C++) (0) | 2022.11.13 |
[ 백준 ] 13913번 - 숨바꼭질 4 (C++) (0) | 2022.11.12 |