본문 바로가기
알고리즘/백준

[백준] 3009: 네 번째 점 / Node.js (JavaScript)

by fluss 2022. 12. 2.

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

 

3009번: 네 번째 점

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

www.acmicpc.net

 

문제

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

 

입력

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

 

출력

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

 

예제 입력 1

5 5
5 7
7 5

 

예제 출력 1

7 7

 

예제 입력 2

30 20
10 10
10 20

 

예제 출력 2

30 10

 

풀이

축에 평행한 직사각형이 되기 위해서는 좌표가 (x, y), (x + a, y), (x,  y + b), (x + a, y + b)와 같이 되어야 한다. x좌표와 y좌표만 모아서 보면 [x, x, x + a, x + a], [y, y, y + b, y + b]이고 같은 좌표가 두 개씩 존재한다는 것을 알 수 있다. 그래서 x좌표와 y좌표를 분리해서 각각 정렬을 하고 하나만 존재하는 x값과 y값을 찾아 출력해주었다.

 

코드

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(el => el.split(' ').map(v => parseInt(v)));

const xList = [];
const yList = [];
for(let i = 0; i < 3; i++){
    xList.push(input[i][0]);
    yList.push(input[i][1]);
}

xList.sort((a, b) => a - b);
yList.sort((a, b) => a - b);

let x = xList[0];
let y = yList[0];
if(x === xList[1]) x = xList[2];
if(y === yList[1]) y = yList[2];

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

댓글