문제
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를 구현해준다.
참고: 2022.08.01 - [✏️Java 공부/기타 등등] - [Java 공부/기타] 객체 정렬하기 (Comparable & Comparator)
[Java 공부/기타] 객체 정렬하기 (Comparable & Comparator)
백준 문제를 풀다 보면 정렬이 필요한 문제가 종종 나온다. 대부분의 경우 Arrays.sort()나 Collections.sort()를 호출하여 해결할 수 있지만 정렬에 추가적인 조건이 붙었거나, 사용자가 정의한 객체를
cocoiscat.tistory.com
코드
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][2];
for(int i = 0; i < N; i++) {
String str1 = br.readLine();
String[] str2 = str1.split(" ");
arr[i][0] = Integer.parseInt(str2[0]);
arr[i][1] = Integer.parseInt(str2[1]);
}
Arrays.sort(arr, new Comparator<int[]>() {
public int compare(int[] arr1, int[] arr2) {
if(arr1[0] == arr2[0]){
return arr1[1] - arr2[1];
}
else{
return arr1[0] - arr2[0];
}
}
});
for(int i =0; i < N; i++) {
System.out.println(arr[i][0] + " " + arr[i][1]);
}
}
}
'🧑💻코딩 테스트 > 백준 (BOJ)' 카테고리의 다른 글
[코딩테스트/백준 알고리즘] 10814번 : 나이순 정렬 (Java, 자바 풀이) (0) | 2022.08.03 |
---|---|
[코딩 테스트/백준 알고리즘] 1295번 : 팰린드롬수(Java 풀이) (0) | 2022.08.01 |
[코딩 테스트/백준 알고리즘] 1181번 : 단어 정렬 (Java 풀이) (0) | 2022.08.01 |
[코딩 테스트/ 백준 알고리즘] 1037번 : 약수 (Java 풀이) (0) | 2022.07.29 |
[코딩테스트/ 백준 알고리즘] 4375번 : 1 (자바, Java 풀이) (0) | 2022.07.28 |
댓글