본문 바로가기
PS 문제 풀이/Baekjoon

[BOJ] 백준 11758 CCW

by 까망 하르방 2021. 2. 28.
반응형

출처:  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

댓글