[백준] 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
반응형

댓글