From b0c8afb9595d132cf348850827208364a7bd5dde Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Mon, 2 Mar 2026 20:34:17 +0900 Subject: [PATCH] baekjoon 20260302 --- code_study/Baekjoon/ts/17387.ts | 40 +++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 code_study/Baekjoon/ts/17387.ts diff --git a/code_study/Baekjoon/ts/17387.ts b/code_study/Baekjoon/ts/17387.ts new file mode 100644 index 0000000..bcfc190 --- /dev/null +++ b/code_study/Baekjoon/ts/17387.ts @@ -0,0 +1,40 @@ +export {}; +const input = require("fs").readFileSync(0).toString().trim().split("\n"); +const [x1, y1, x2, y2]: number[] = input[0].split(" ").map(Number); +const [x3, y3, x4, y4]: number[] = input[1].split(" ").map(Number); + +const compare = (A: number[], B: number[]): boolean => { + if(A[0] < B[0]) return true; + else if(A[0] === B[0]) return A[1] <= B[1]; + + return false; +} + +const crossProduct = (A: number[], B: number[], C: number[]): number => { + const op: number = (B[0] - A[0]) * (C[1] - A[1]) - (B[1] - A[1]) * (C[0] - A[0]); + if(op > 0) return 1; + else if(op < 0) return -1; + return 0; +} + + +let A: number[] = [x1, y1], B: number[] = [x2, y2]; +if(!compare(A, B)) [A, B] = [B, A]; + +let C: number[] = [x3, y3], D: number[] = [x4, y4]; +if(!compare(C, D)) [C, D] = [D, C]; + +let ans: number = 0; + +const crossABCD: number = crossProduct(A, B, C) * crossProduct(A, B, D); +const crossCDAB: number = crossProduct(C, D, A) * crossProduct(C, D, B); + +if((crossABCD === 0 && crossCDAB === 0)) { + if(compare(A,D) && compare(C,B)) ans = 1; +} + +else if(crossABCD <= 0 && crossCDAB <= 0) { + ans = 1; +} + +console.log(ans); \ No newline at end of file