[Baekjoon] 11651번 : 좌표 정렬하기 2 문제풀이 (Node.js)

woohyuk·2022년 12월 2일
0

https://www.acmicpc.net/problem/11651

문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

코드

const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const [N, ...arr] = require('fs')
  .readFileSync(filePath)
  .toString()
  .trim()
  .split('\n');
const coordsArr = arr.map(coords =>
  coords.split(' ').map(nums => parseInt(nums))
);

let results = '';
coordsArr
  .sort((a, b) => {
    if (a[1] !== b[1]) {
      return a[1] - b[1];
    }
    return a[0] - b[0];
  })
  .forEach(coords => {
    results += `${coords[0]} ${coords[1]}\n`;
  });

console.log(results);

풀이

11650문제와 같다.
11650문제는 x좌표가 증가하는 순이였다면 이번문제는 y좌표가 증가하는 순으로 정렬하면 된다.
따라서 y좌표를 먼저 비교한뒤
같지않다면 오름차순 정렬,
같다면 x좌표를 비교하여 오름차순 정렬을 하면 된다.

profile
기록하는 습관을 기르자

0개의 댓글