-
[백준 11650번] 좌표 정렬하기 (Java 풀이)Algorithm/기타 2020. 1. 28. 22:29
백준알고리즘 11650번 : 좌표 정렬하기
N개의 좌표를 오름차순으로 정렬하는 문제이다.
x좌표가 같으면 y좌표를 오름차순으로 정렬해서 출력해야한다.
정렬 조건이 추가되었기 때문에, Arrays.sort()에 Comparator 인터페이스를 재정의해서 사용해야한다.
풀이 과정
1. 2차원 배열에 각 좌표를 담는다.
2. Arrays.sort(arr, new Comparator<int []>){}로 Comparator를 재정의함으로써
'x축 값이 같다면, y축 값을 비교해준다.'라는 조건식을 추가해주어 return하도록 한다.
3. 정렬된 배열을 출력한다.소스 ▽
더보기import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main {// 11650번 좌표 정렬하기 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = Integer.parseInt(sc.nextLine()); int[][] arr = new int[num][2]; for (int i = 0; i < arr.length; i++) { arr[i][0] = sc.nextInt(); arr[i][1] = sc.nextInt(); } Arrays.sort(arr, new Comparator<int[]>() { @Override public int compare(int[] o1, int[] o2) { if (o1[0] == o2[0]) { return Integer.compare(o1[1], o2[1]); } return Integer.compare(o1[0], o2[0]); } }); for (int[] is : arr) { System.out.println(is[0] + " " + is[1]); } } }
Summary
1. 배열 정렬 시 Comparator 사용하기 : Arrays.sort(arr, new Comparator<>(){});
2. Comparator 인터페이스는 다음과 같은 메서드를 사용하여 객체를 정렬한다.- int compare(T o1, T o2) : 전달된 두 객체의 순서를 비교
- boolean equals(Object obj) : 해당 comparator와 전달된 객체가 같은지 확인
- default Comparator <T> reversed() : 해당 comparator의 역순인 comparator를 반환
'Algorithm > 기타' 카테고리의 다른 글
[백준 1094번] 막대기 (Java 풀이) (0) 2020.02.16 [백준 5635번] 생일 (Java 풀이) (0) 2020.02.05 [백준 1427번] 소트인사이드 (Java 풀이) (0) 2020.01.27 [백준 2738번] 행렬 덧셈 (Java 풀이) (0) 2020.01.26 [백준 9093번] 단어 뒤집기 (Java 풀이) (0) 2020.01.25