좌표 정렬(CompareTo)

Seungmin Lim·2022년 2월 15일
0

코딩문제연습

목록 보기
54/63

문제

나의풀이

import java.util.*;
class Point implements Comparable<Point>{
	public int x,y;
	//생성
	Point(int x, int y) {
		this.x = x;
		this.y = y;
	}
	@Override
	public int compareTo(Point o) {
		//x값과 비교값의 x값이 같다면,
		if(this.x == o.x) return this.y - o.y;
		//x값을 오름차순으로 정렬. 내림차순 : o.x - this.x
		else return this.x - o.x;
        
        //Integer.compare(this.x,o.x); (오름차순정렬)
        //Double.compare(this.x,o.x); 소숫점이 있는 값 정렬. (오름차순)
	}
}
class Main {
	public ArrayList<Point> solution(int n,ArrayList<Point> arr) {
		Collections.sort(arr);
		return arr;
	}

		    
	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n = kb.nextInt();
		ArrayList<Point> arr = new ArrayList<>();
		for(int i=0; i<n; i++) {
			int x = kb.nextInt();
			int y = kb.nextInt();
			arr.add(new Point(x, y));
		}
		for(Point o : T.solution(n, arr)) System.out.println(o.x + " " + o.y);
		
	}
	
}

풀이방법

CompareTo 메소드를 담고있는 Comparable을 implements해서 좌표정렬을 할 수있다!

먼저 x,y값을 받을 class를 생성해준다.
arr에 값을 모두 받고, compareTo 메소드를 통해
this.x (비교값) == o.x(들어온값) 이라면 this.y와 o.y를 비교해 음수가 나오도록 return 해준다.
내림차순으로 정렬을 하려면 o.y-this.y를 return하면된다.

Collections.sort에 해당 arr을 넣으면 자동으로 compareTo 메소드를 적용시킨값을 return해준다.

핵심키워드

Comparable을 이용하여 좌표를 정렬할 때 유용하게 사용하자!
Collections.sort

0개의 댓글