11650 좌표 정렬하기

문제 이해

(x,y) 좌표가 여러 개 주어질 것이다.
x 기준 오름차순으로 정리하고, 만약 x 좌표가 동일하다면 y좌표를 기준으로 오름차순 정리하면 된다.


문제 풀이

간단한 문제이다.
Java에서 이미 주어지고 있는 Collections.sort() 메서드를 활용하면 될 것이다.
단지, (x,y) 총 2개 좌표가 존재하기 때문에 클래스를 하나 만들어주고, 이후에 Comparable 인터페이스를 상속하여 compareTo 메서드를 고쳐주면 될 것이다.


코드

import java.io.*;
import java.util.*;

class Point implements Comparable<Point>{
	int x;
	int y;
	
	public Point(int x, int y) {
		this.x = x;
		this.y = y;
	}
	
	@Override
	public int compareTo(Point p) {
		if(this.x!=p.x) {
        // x값이 다르다면 x를 기준으로 오름차순 정렬
        // 오름차순 정렬이므로 this.x - p.x를 반환해야 한다
			return this.x - p.x;
		}
		else return this.y - p.y;
        // x 값이 같은 Case이므로, y를 기준으로 오름차순 정렬
	}
}

public class Main {
	static StringBuilder sb = new StringBuilder();
	
	public static void main(String[] args) {
		FastReader sc = new FastReader();
		
		ArrayList<Point> p = new ArrayList<Point>();
		
		int N = sc.nextInt();
		
		for(int i =0;i<N;i++) {
			p.add(new Point(sc.nextInt(), sc.nextInt()));
		}
		
		Collections.sort(p); // Sorting이 이뤄짐
		
		StringBuilder sb = new StringBuilder();
		for(Point tmp:p) {
		 sb.append(tmp.x).append(" ").append(tmp.y).append("\n");
		}
		System.out.println(sb);
	
	}

	
	static class FastReader // 빠른 입력을 위한 ㅡㅋㄹ래스
}

결과

좋은 웹페이지 즐겨찾기