https://www.acmicpc.net/problem/11651
11651번: 좌표 정렬하기 2
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
예제 입력1
5
0 4
1 2
1 -1
2 2
3 3
예제 출력1
1 -1
1 2
2 2
3 3
0 4
해결 방법
1. 테스트케이스를 뺀다.
2. map을 이용해서 x좌표와 y좌표를 나눈다.
3. sort를 이용해서 만약 y좌표가 같지 않다면 y좌표를 기준으로, y좌표가 같다면 x좌표를 기준으로 정렬한다.
4. forEach를 사용해서 정렬된 x좌표와 y좌표를 출력한다.
전체 코드
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");
const testCase = input.shift();
let answer = '';
input
.map((e) => e.split(" ").map(Number))
.sort((a, b) => {
if(a[1] !== b[1]){
return a[1] - b[1]
} else{
return a[0] - b[0]
}
})
.forEach((e) => {
answer +=`${e[0]} ${e[1]}\n`
});
console.log(answer);
'알고리즘 > 백준' 카테고리의 다른 글
[JavaScript] 백준 정렬 단어정렬 #1181번 (0) | 2022.10.18 |
---|---|
[JavaScript] 백준 좌표 정렬하기 #11650번 (2) | 2022.09.29 |
[JavaScript] 백준 정렬 소트인사이드 #1427번 (0) | 2022.09.28 |
[JavaScript] 백준 정렬 통계학 #2108번 (0) | 2022.09.27 |
[JavaScript] 백준 정렬 커트라인 #25305번 (0) | 2022.09.26 |