백준 3009 네 번째 점-JS

- 제출한 코드

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let answer = '';
let a = input[0].trim().split(' ');
let b = input[1].trim().split(' ');
let c = input[2].trim().split(' ');
let arr_x = [];
let arr_y = [];

for(let i=0; i < input.length; i++) {
    let arr = input[i].trim().split(' ');
    arr_x.push(arr[0]);
    arr_y.push(arr[1]);
}

let x = arr_x[0]; //30 5
let y = arr_y[0]; //20 5

let x_find = arr_x.indexOf(x,1);

if(x_find === -1) {
    x = x;
} else {
    arr_x.splice(x_find,1);
    arr_x.splice(0,1);
    x = arr_x[0];
}

let y_find = arr_y.indexOf(y,1);

if(y_find === -1) {
    y = y;
} else {
    arr_y.splice(y_find,1);
    arr_y.splice(0,1);
    y = arr_y[0];
}


// console.log(x);
// console.log(y);
answer += x + ' ' +  y;
console.log(answer);

은근 많은 뻘짓 후 만들어졌다. x는 x들중 다른 하나의 x값이고, y또한 제공된 y들 중 다른 한가지 값이다.
문제를 풀이해보면
1. x만 따로 arr_x배열에 넣는다.
2. y만 따로 arr_y배열에 넣는다.
3. 각 배열에서 고유한 한가지의 값이 x,y값이 된다
여기서 고유한 값을 골라내는 것이 은근 헷갈렸다(내가 바보임) 그래서 생각해낸 풀이는
4. 각배열의 0번째 인덱스 값을 x,y에 저장
5. indexOf함수를 통해 arr_x(y)배열에서 1번째 인덱스 값부터(0번째부터면 0번째 값이니까 바로 값 리턴되니 1부터)찾아라고 해준다.
6. 여기서 x(y)_find가 -1이면(중복값이 없으면) x(y)가 고유값이고, 아니면 그 인덱스 번호를 가진 요소를 지워준 다음 0번째 인덱스 값의 요소를 지워주고 하나만 남은 배열의 값을 x(y)의 값으로 지정
** 0번째 인덱스부터 지워주면 인덱스가 바뀌어 다른 요소를 지워버리는 불상사가 발생하기에 유의해야함

다른 방법도 생각해보자

좋은 웹페이지 즐겨찾기