ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 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를 반환

     

     

    댓글

Designed by Tistory.