문제 : https://www.acmicpc.net/problem/11650
문제 등급: 실버5
문제 풀이 : x좌표 기준으로 오름차순 정렬 후 같으면 y좌표 증가하는 방식이다.
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[0]!=b[0]) return a[0]-b[0];
else return a[1]-b[1];
}
arr.sort(compare);
let answer = "";
for(let point of arr){
answer += point[0] + " " + point[1] + "\n";
}
console.log(answer);
배운 것
: a[0] , b[0] / a[1], b[1] 에 대해 설정한 것은 예시로 들면 다음과 같다.
만약 arr 이 [ [1,2] , [2,3] ,[3,5] ] 이런 식으로 들어가 있을 때 a[0]은 1 , b[0]은 2와 같다.
이런 식으로 a[0] = 2 , b[0] = 3 이런 식으로 비교하다가 같은 값일 때는 a[1] 즉 y좌표 기준으로 오름차순 정렬해준다.
: point[0]도 같은 방식으로 x좌표 , point[1]도 같은 방식으로 y 좌표이며 for문을 돌려서 이를 반복 출력해준다.
시간 복잡도 : 정렬방법을 사용하기 때문에 O(NlogN)이다.
'코딩테스트 대비 > 백준 알고리즘' 카테고리의 다른 글
BOJ - 1181 단어 정렬 (0) | 2024.05.23 |
---|---|
BOJ - 15651 좌표 정렬하기 2 (0) | 2024.05.22 |
BOJ - 11004 K번째 (0) | 2024.05.19 |
BOJ - 2751 수 정렬하기 2 (0) | 2024.05.19 |
BOJ - 2750 수 정렬하기 (0) | 2024.05.18 |