백준 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번째 인덱스부터 지워주면 인덱스가 바뀌어 다른 요소를 지워버리는 불상사가 발생하기에 유의해야함
다른 방법도 생각해보자
Author And Source
이 문제에 관하여(백준 3009 네 번째 점-JS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yoosk5485/백준-3009-네-번째-점-JS저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)