백준/정렬
BOJ 11651 - 좌표 정렬하기2
누누01
2022. 11. 14. 13:58
728x90
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
이번 문제는 좌표 정렬하기1 에서 조금 더 응용한 문제이다.
기존에는 x 좌표가 증가하는 순으로 정렬하였지만, y좌표가 증가하는 순으로 조건을 바꾸어 적용하면 쉽게 풀 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int number = Integer.parseInt(br.readLine());
int[][] coordinate = new int[number][2];
for (int i = 0; i < number; i++) {
st = new StringTokenizer(br.readLine());
coordinate[i][0] = Integer.parseInt(st.nextToken());
coordinate[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(coordinate, (e1, e2) -> {
if (e1[1] == e2[1]) {
return e1[0] - e2[0];
} else {
return e1[1] - e2[1];
}
});
for (int i = 0; i < coordinate.length; i++) {
sb.append(coordinate[i][0] + " " + coordinate[i][1]).append("\n");
}
System.out.println(sb);
br.close();
}
}