[BOJ_11650 | compareTo] 좌표 정렬하기

2019. 1. 5. 00:33Computer Science/Problem Solving (PS)

save image



문제 풀이



문제 자체는 그렇게 어렵지 않았으나, 

compareTo 메소드를 구현하여

Arrays.sort 를 사용하면 간단하게 해결할 수 있는 문제였다.


따로 Merge Sort, Quick Sort 등을 구현하기 귀찮았다면

Object 객체를 하나 선언하고

Comparable Class를 구현하여 기준만 제대로 할당해 준다면

굉장히 간단하게 문제를 해결할 수 있었다.


간단한 설명을 덧붙이자면

x좌표가 비교하고자 하는 객체의 x좌표보다 작으면 -1, 크면 1을 리턴하고

같은 경우에 y좌표를 비교하여 리턴값을 -1, 1로 설정해주면

간단하게 구현이 가능하다. 


소스 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.*;
public class BOJ_11650 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        point[] arr = new point[n];
        for(int i=0;i<n;i++){
            int a = input.nextInt(); int b = input.nextInt();
            arr[i] = new point(a, b);
        }
        Arrays.sort(arr);
        for(int i=0;i<n;i++){
            System.out.println(arr[i].x+" "+arr[i].y);
        }
    }
}
class point implements Comparable<point>{
    int x, y;
    point(int x, int y){
        this.x = x;
        this.y = y;
    }
    public int compareTo(point p){
        if(x < p.x) return -1;
        else if(x > p.x) return 1;
        else{
            if(y < p.y) return -1;
            return 1;
        }
    }
}
 
cs



반응형