반응형

문제

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

입력

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

출력

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

해설

축에 평행한 직사각형을 만들기 위해서는 사실 두개의 점만 알고 있다면 직사각형을 그릴 수 있다.

 

직사각형의 시작점과 끝점 2개(그림에서 파란색 점 두개)만 안다면 직사각형을 그릴 수 있다.

 

(x1, y1) (x2,y2) 두개의 점을 안다고 하는 경우 아래와 같이 직사각형이 그려진다.

 

다시 문제로 넘어가면, 3개의 점을 알고 있다면 x1, y1, x2, y2 4개의 값을 모두 알 수 있다.

 

점 4개의 좌표값을 모으면 각자 2번씩 등장하기 때문에 우리는

 

3개의 점의 좌표값 중 1번만 등장하는 값을 찾으면 된다.

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var fs = require('fs');
var lines = fs.readFileSync('/dev/stdin').toString().split('\n');
var points = lines.map(lines => {
  const points = lines.split(" ").map(el => parseInt(el));
  return points
})
 
const xList = []
const yList = []
 
for(let point of points) {
  const xIndex = xList.findIndex(el => el === point[0])
  if(xIndex != -1) {
    xList.splice(xIndex, 1)
  } else {
    xList.push(point[0])
  }
 
  const yIndex = yList.findIndex(el => el === point[1])
  if(yIndex != -1) {
    yList.splice(yIndex, 1)
  } else {
    yList.push(point[1])
  }
}
 
console.log(`${xList[0]} ${yList[0]}`)
 
 
cs

 

 

반응형

+ Recent posts