[백준/BOJ] 3009번 네 번째 점 (Javascript / Node js)

2023. 9. 2. 17:54코딩 테스트 (BOJ)

3009번: 네 번째 점 (acmicpc.net)

 

3009번: 네 번째 점

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

www.acmicpc.net

 

 

문제풀이

문제는 간단하다. 직사각형의 네 번째 점의 좌표를 출력하는게 문제인데, 말 그대로 직사각형이기 때문에, 한 꼭짓점의 x좌표와 y좌표는 반드시 같은 x좌표를 갖는 다른 꼭짓점과, 같은 y좌표를 갖는 다른 꼭짓점이 존재한다.

 

만약 제공된 꼭짓점들의 좌표가 위와 같다면, 꼭짓점들의 x좌표는 10이 두개, 30이 한개이니 남은 꼭짓점의 좌표가 30이란 것을 알 수 있다. y좌표도 마찬가지로 20이 두개, 10이 한개이니 남은 꼭짓점의 y좌표는 10이 되겠다.

 

이를 로직으로 구현하면 각각의 꼭짓점의 x좌표, y좌표 각각 같은 값이 몇개인지 조사하고, 조사한 꼭짓점과 같은 좌표값이 본인을 포함해 1개라면 이 값을 4번째 꼭짓점의 좌표로 특정할 수 있다.

 

전체코드
 
const fs = require("fs");

var input = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map(item => item.split(" "));

input = input.map(item => item.map(item2 => parseInt(item2)));

var cntIndex0 = [0, 0, 0];
var cntIndex1 = [0, 0, 0];

for(let i = 0; i<3; i++){
    for(let j = 0; j<3; j++){
        if(input[i][0] == input[j][0]){
            cntIndex0[i] += 1;
        }
        if(input[i][1] == input[j][1]){
            cntIndex1[i] += 1;
        }
    }
}

var x = 0;
var y = 0;

for(let i = 0; i< 3; i++){
    if(cntIndex0[i] == 1){
        x = input[i][0];
    }
    if(cntIndex1[i] == 1){
        y = input[i][1];
    }
}

console.log(x + " " + y);