코딩테스트 대비/백준 알고리즘

BOJ - 15651 좌표 정렬하기 2

JellyApple 2024. 5. 22. 23:53

문제 : https://www.acmicpc.net/problem/16953

문제 등급: 실버 5 

문제 풀이 :  11650번과 반대로 이번에는 y좌표가 증가하는 순으로 먼저하고 , y좌표가 같을 땐 x 좌표가 증가하는 순을 찾으면 된다. 즉, compare 함수에서 a[1]-b[1] 을 먼저 기준으로 고려해주면 된다.

시간복잡도: 정렬 방법을 사용했기 때문에 O(NlogN)으로 볼 수 있다. 

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
let N = Number(input[0]);
let arr = [];
for(let i=1;i<=N;i++){
   let [x,y] = input[i].split(" ").map(Number);
   arr.push([x,y]);
}

function compare(a,b){
    if(a[1]!=b[1]) return a[1]-b[1] // y좌표는 a[1] , b[1] 
    else return a[0]-b[0];
}

let answer = "";
for(let point of arr){
   answer += point[0] + " " + point[1] + "\n";
}
console.log(answer);