코딩테스트연습/백준

[백준 - JAVA] 11650번 좌표 정렬하기

:)jun 2021. 12. 15. 13:48

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

// Node 객체로 이루어진 배열로 만든다음에 Node기준 Comparator 만들어서 x먼저 정렬, 값이 같다면 y정렬하자!

// 프로덕션코드


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

public class Yun_11650 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int numberOfNode = scanner.nextInt();

        Node[] arrayOfNode = new Node[numberOfNode];

        for (int i = 0; i < numberOfNode; i++) {
            arrayOfNode[i] = new Node(scanner.nextInt(), scanner.nextInt());
        }

        Arrays.sort(arrayOfNode, new Comparator<Node>() {
            @Override
            public int compare(Node o1, Node o2) {
                if (o1.x != o2.x) {
                    return o1.x - o2.x;
                }
                return o1.y - o2.y;
            }
        });

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


    }
}

class Node {
    int x;
    int y;

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


// 성공!