[백준] 3009. 네 번째 점

1 분 소요

문제 링크

[백준] 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);
});

카테고리:

업데이트:

댓글남기기