반응형
출처: https://www.acmicpc.net/problem/11758
Input
1 1
5 5
7 3
Output
-1
3개의 좌표를 토대로 기하와 벡터 공식을 이용하면 쉽게 알 수 있습니다.
- S < 0 시계 방향
- S > 0 반시계 방향
- S = 0 일직선(평행)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
Point[] points = new Point[4];
for(int i=1; i<=3; i++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
points[i] = new Point(x, y);
}
System.out.println(ccw(points));
}
private static int ccw(Point[] points) {
// 벡터의 외적을 수행합니다.
// 점 p, q에대해 점 r의 x, y를 빼줘서 그래프를 원점에 맞춥니다.
int first = (points[2].x - points[1].x) * (points[3].y - points[1].y);
int second = (points[2].y - points[1].y) * (points[3].x - points[1].x);
int result = first - second;
if(result > 0) return 1;
else if(result == 0) return 0;
else return -1;
}
}
class Point {
int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
반응형
'PS 문제 풀이 > Baekjoon' 카테고리의 다른 글
[BOJ] 백준 10950 A + B - 3 (0) | 2021.02.28 |
---|---|
[BOJ] 백준 2261 가장 가까운 두 점 (0) | 2021.02.28 |
[BOJ] 백준 4354 문자열 제곱 (0) | 2021.02.28 |
[BOJ] 백준 3055 탈출 (0) | 2021.02.27 |
[BOJ] 백준 2503 숫자 야구 (0) | 2021.02.27 |
댓글