[백준] 3009번 - 네 번째 점 (node.js)

    728x90
    반응형

     

    [백준] 3009번 - 네 번째 점 (node.js)

     

    링크

    https://www.acmicpc.net/problem/3009

     

     

    문제

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

     

     

    입력

    세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.

     

     

    출력

    직사각형의 네 번째 점의 좌표를 출력한다.

     

     

    예제

    입력 1

    5 5
    5 7
    7 5
    

     

    출력 1

    7 7
    

    입력 2

    30 20
    10 10
    10 20
    

     

    출력 2

    30 10

     

     

     

     

    답안

    const fs = require("fs");
    const arr = fs
    	.readFileSync("input.txt")
    	.toString()
    	.trim()
    	.split(/\r?\n/)
    	.map((d) => d.split(" ").map((d) => parseInt(d)));
    
    const xArr = arr.map((d) => d[0]).sort();
    const yArr = arr.map((d) => d[1]).sort();
    const x = xArr[0] === xArr[1] ? xArr[2] : xArr[0];
    const y = yArr[0] === yArr[1] ? yArr[2] : yArr[0];
    console.log(`${x} ${y}`);

     

    직사각형의 특성상 4개의 좌표에서 두개씩은 같게 된다.

    그렇다면 주어진 3개의 좌표에서 공통된 점이 아닌것들을 찾으면 된다.

    그래서 x, y좌표를 따로 배열로 구하고 그걸 sort 처리해주면.

    [같은 x점, 같은 x점, 다른 x점 ] or [다른 x점, 같은 x점, 같은 x점] 이라는 두가지의 경우가 된다 (sort로 정렬 해줘서)

    이후에 index 0과 1번째 자리의 값을 비교해서 구하면 된다.

     

     

     

    728x90
    반응형

    댓글