관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 백준 11650 좌표 정렬하기 -정렬- 본문

알고리즘/문자열, 정렬

[알고리즘] 백준 11650 좌표 정렬하기 -정렬-

막무가내막내 2020. 2. 28. 18:16
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

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        MyXY[] myXY = new MyXY[size];

        for (int i = 0; i < size; i++) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            myXY[i] = new MyXY(x, y);
        }

        Arrays.sort(myXY);

        for (int i = 0; i < size; i++) {
            System.out.println(myXY[i].x + " " + myXY[i].y);
        }
    }

    static class MyXY implements Comparable<MyXY> {
        int x;
        int y;

        MyXY(int x, int y) {
            this.x = x;
            this.y = y;
        }

        @Override
        public int compareTo(MyXY myXY) {
            if (this.x == myXY.x) {
                return this.y - myXY.y;
            } else {
                return this.x - myXY.x;
            }
        }
    }
}

 

 

 

Comparable를 implements한 x, y좌표를 저장하는 클래스를 만들어 compareTo를 오버라이드 하여 Arrays.sort()시 내가 원하는 대로 정렬하게 해주었다. 

(x좌표로 정렬하는데 만약 x좌표 같으면 y좌표 비교해서 오름차순 정렬되게)

 

Comaparable과 Comaprater에 대해 공부하는 시간이되었다.

 

Comparable - 기본 정렬기준을 구현하는데 사용.

Comparator - 기본 정렬기준 외에 다른 기준으로 정렬하고자할 때 사용. 


밑 사이트를 참고
https://cwondev.tistory.com/15 [잡동사니 정보공유]

 

 

728x90
Comments