백준 11758번: 참고 풀이로 남긴 CCW 코드
참고 풀이로 외적을 계산했습니다
기하학을 충분히 익힌 상태가 아니어서 백준 11758번 CCW는 참고 글을 보고 풀었습니다.
입력받은 세 점을 A, B, C로 두고 A를 기준으로 한 두 벡터 AB와 AC의 외적을 계산합니다. 값이 양수이면 반시계 방향으로 1, 0이면 일직선으로 0, 음수이면 시계 방향으로 -1을 출력합니다.
5월 30일에 적은 같은 문제의 글과 코드는 같습니다.
제출 코드
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;
}
}
}