백준 - 11650번(좌표 정렬하기)

최지홍·2022년 2월 5일
0

백준

목록 보기
26/145

문제 출처: https://www.acmicpc.net/problem/11650


문제

  • 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class Main {

    public static void main(String[] args) throws IOException {
        StringBuilder sb = new StringBuilder();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(reader.readLine());
        TreeSet<Nums> treeSet = new TreeSet<>();
        while (N-- > 0) {
            StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
            int num1 = Integer.parseInt(tokenizer.nextToken());
            int num2 = Integer.parseInt(tokenizer.nextToken());
            treeSet.add(new Nums(num1, num2));
        }

        for (Nums nums : treeSet) {
            sb.append(nums).append("\n");
        }

        System.out.println(sb);
    }

}

class Nums implements Comparable<Nums> {

    int num1;
    int num2;

    public Nums(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    @Override
    public int compareTo(Nums o) {
        if (this.num1 == o.num1) {
            if (this.num2 == o.num2) {
                return -1;
            } else {
                return this.num2 - o.num2;
            }
        } else {
            return this.num1 - o.num1;
        }
    }

    @Override
    public String toString() {
        return num1 + " " + num2;
    }

}

  • TreeSet과 Comparable을 통해 쉽게 풀 수 있는 문제였다.
profile
백엔드 개발자가 되자!

0개의 댓글