Blog

백준 11758번: 참고 풀이로 남긴 CCW 코드

참고 풀이로 외적을 계산했습니다

기하학을 충분히 익힌 상태가 아니어서 백준 11758번 CCW는 참고 글을 보고 풀었습니다.

입력받은 세 점을 A, B, C로 두고 A를 기준으로 한 두 벡터 AB와 AC의 외적을 계산합니다. 값이 양수이면 반시계 방향으로 1, 0이면 일직선으로 0, 음수이면 시계 방향으로 -1을 출력합니다.

5월 30일에 적은 같은 문제의 글과 코드는 같습니다.

제출 코드

Java
import java.io.*;
import java.util.*;

class Main {

    static int[][] arr = new int[3][2];

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        for (int i = 0; i < 3; i++) {
            st = new StringTokenizer(br.readLine());

            arr[i][0] = Integer.parseInt(st.nextToken());
            arr[i][1] = Integer.parseInt(st.nextToken());
        }

        bw.write(String.valueOf(CCW()));
        bw.flush();
    }

    public static int CCW() {
        int result = (arr[1][0] - arr[0][0]) * (arr[2][1] - arr[0][1])
                - (arr[2][0] - arr[0][0]) * (arr[1][1] - arr[0][1]);

        if (result > 0) {
            return 1;
        } else if (result == 0) {
            return 0;
        } else {
            return -1;
        }
    }
}