728x90
https://www.acmicpc.net/problem/11650
11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
이번 문제는 Comparator인터페이스의 compare() 메서드를 오버라이딩하여 Arrays.sort를 사용하면 풀 수 있는 문제이다.
Arrays.sort()는 매개변수로 정렬 조건을 추가할 수 있는데 이 정렬 조건을 우리 입맛에 맞게 compare() 메서드를 오버라이딩해 추가해준다.
코드는 다음과 같다.
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
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[0] == e2[0]) {
return e1[1] - e2[1];
} else {
return e1[0] - e2[0];
}
});
for (int i = 0; i < number; i++) {
sb.append(coordinate[i][0] + " " + coordinate[i][1]).append("\n");
}
System.out.println(sb);
br.close();
}
}
'백준 > 정렬' 카테고리의 다른 글
BOJ 1181 - 단어 정렬 (0) | 2022.11.14 |
---|---|
BOJ 11651 - 좌표 정렬하기2 (0) | 2022.11.14 |
BOJ 1427 - 소트인사이드 (0) | 2022.11.14 |
BOJ 2108 - 통계학 (0) | 2022.11.08 |
BOJ 10989 - 수 정렬하기3 (0) | 2022.11.08 |