[백준] 3009. 네 번째 점
문제 링크
풀이 과정
세 점의 x, y 좌표의 중복 여부를 확인하기 위해 Map 을 사용한 방법은 다음과 같습니다.
const readline = require("readline");
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const input = [];
rl.on("line", (line) => {
input.push(line);
}).on("close", () => {
let hor = new Map(),
ver = new Map();
for (let i = 0; i < input.length; i++) {
let pos = input[i].split(" ");
hor.set(pos[0], (hor.get(pos[0]) ?? 0) + 1);
ver.set(pos[1], (ver.get(pos[1]) ?? 0) + 1);
}
hor.forEach((val, key) => {
if (val == 1) process.stdout.write(key + " ");
});
ver.forEach((val, key) => {
if (val == 1) console.log(key);
});
});
x 좌표와 y 좌표 각각을 구하기 위해 세 번의 비교를 진행합니다.
if (x1 == x2) process.stdout.write(x3 + " ");
else if (x1 == x3) process.stdout.write(x2 + " ");
else process.stdout.write(x1 + " ");
- 점 1과 점 2의 x 좌표가 같다면, 네 번째 점의 x 좌표는 점 3의 것과 같게 됩니다.
- 점 1과 점 3의 x 좌표가 같다면, 네 번째 점의 x 좌표는 점 2의 것과 같게 됩니다.
- 점 2와 점 3의 x 좌표가 같다면, 네 번째 점의 x 좌표는 점 1의 것과 같게 됩니다.
if (y1 == y2) console.log(y3);
else if (y1 == y3) console.log(y2);
else console.log(y1);
y 좌표를 구하는 방식도 위와 같습니다.
코드
const readline = require("readline");
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
const input = [];
rl.on("line", (line) => {
input.push(line);
}).on("close", () => {
let x1, y1, x2, y2, x3, y3;
let l1 = input[0].split(" ");
let l2 = input[1].split(" ");
let l3 = input[2].split(" ");
(x1 = l1[0]), (y1 = l1[1]);
(x2 = l2[0]), (y2 = l2[1]);
(x3 = l3[0]), (y3 = l3[1]);
if (x1 == x2) process.stdout.write(x3 + " ");
else if (x1 == x3) process.stdout.write(x2 + " ");
else process.stdout.write(x1 + " ");
if (y1 == y2) console.log(y3);
else if (y1 == y3) console.log(y2);
else console.log(y1);
});
댓글남기기