백준 11650번 좌표 정렬하기-JS

yugyeongKim·2021년 11월 7일
0

백준

목록 보기
37/52
post-custom-banner

- 처음 제출한 코드(시간초과)

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input.shift());
let numArr = [];
for(let i =0; i< N; i++) {
  numArr.push(input[i].trim().split(' ').map(x=>+x));
}
let answer = '';
let tmp = [];
for(let i=0; i< N; i++) {
  for(let j=0; j < N-1; j++) {
    tmp = 0;
    if(numArr[j][0] > numArr[j+1][0]) {
      tmp = numArr[j];
      numArr[j] = numArr[j+1];
      numArr[j+1] = tmp;
    } else if(numArr[j][0] === numArr[j+1][0]) {
      if(numArr[j][1] > numArr[j+1][1]) {
        tmp = numArr[j];
        numArr[j] = numArr[j+1];
        numArr[j+1] = tmp;
      }
    }
  }
}

numArr.forEach(e => {
  answer += e[0] + ' ' + e[1] +'\n'
})
console.log(answer);

버블정렬로 정렬했다. 그러니 시간초과가 뜸 sort로 방법을 바꿔야 겠다고 생각.

- 제출한 코드

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
let N = Number(input.shift());
let numArr = [];
for(let i =0; i< N; i++) {
  numArr.push(input[i].trim().split(' ').map(x=>+x));
}
let answer = '';
numArr.sort((a,b) => {
  if(a[0] === b[0]) {return a[1] - b[1];}
  else {return a[0] - b[0];}
})


console.log(numArr);
numArr.forEach(e => {
  answer += e[0] + ' ' + e[1] +'\n'
})
console.log(answer);

sort로 하는 법이 몰라 일단 다른사람이 푼거 를 참고했다.

- 새로 알게 된 점

post-custom-banner

0개의 댓글