dev-matching_test

unow30·2021년 4월 1일
0

algorism

목록 보기
26/30

문제 제목

문제 설명

직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다.

제한사항

  1. v는 세 점의 좌표가 들어있는 2차원 배열입니다.
  2. v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다.
  3. 좌표값은 1 이상 10억 이하의 자연수입니다.
  4. 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요.

입출력 예

vreturn
[[1, 4], [3, 4], [3, 10]][1, 10]
[[1, 1], [2, 2], [1, 2]][2, 1]
/*   3,10
.+   +
.1,10   
.   
.   
.   
.1,4   
.+  +
.   3,4
.
.
...........
하나의 점의 x,y좌표값과 다른 점의 좌표값 중 x나 y가 일치하는 부분이 있다면 
두 좌표는 x 또는 y좌표 직선상에 위치하는 값이다.
좌표값은 1이상 10억 이하의 자연수 
v[n]의 [x,y]값과 v[m]의 [x,y]값을 비교
*/
function solution(v) {
    var answer = []
    let x = {}
    let y = {}
    v.forEach(el => {
        if (x[el[0]]) {
            x[el[0]] += 1
        } else {
            x[el[0]] = 1
        }

        if (y[el[1]]) {
            y[el[1]] += 1
        } else {
            y[el[1]] = 1
        }
    })
    /**
     * X = {'1':1, '10':2}
     * Y = {'3':1, '5':2}
     */

    for (let i in x) {
        if (x[i] == 1) answer.push(Number(i))
    }
    for (let i in y) {
        if (y[i] == 1) answer.push(Number(i))
    }
    console.log('Hello Javascript')
    console.log(answer)
}
solution([[1, 4], [3, 4], [3, 10]])
solution([[1, 1], [2, 2], [1, 2]])

0개의 댓글