본문 바로가기

백준 문제풀기/JAVA

[백준 11758 JAVA 자바] CCW

좌표 평면 위의 점 P1, P2, P3가
시계방향인지

반시계방향인지

일직선인지 판단하는 문제입니다

 

그냥 눈으로 보면 간단한데

골드 난이도라니?!

걱정이 되지만 풀어봅시다

 

저는 벡터의 외적을 이용했습니다

P1->P2 벡터와

P2->P3 벡터의 외적을 구해서

 

백터의 외적

P1과 P2가 시계 방향으로 흘러가는지

반시계방향으로 흘러가는지

판단할 수 있습니다

 

코드입니다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		
		int[] arr1 = new int[3];
		int[] arr2 = new int[3];

		for (int i=0; i<3; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			arr1[i] = Integer.parseInt(st.nextToken());
			arr2[i] = Integer.parseInt(st.nextToken());
		}
		
		int cross = (arr1[1]-arr1[0])*(arr2[2]-arr2[1])-(arr1[2]-arr1[1])*(arr2[1]-arr2[0]);
		
		if(cross>0) {
			System.out.println(cross/cross);
		}else if(cross<0) {
			System.out.println(-1*cross/cross);
		}else {
			System.out.println(cross);
		}
	}
}

외적의 식은 간단합니다