[백준] 11650번: 좌표 정렬하기 자바

이다혜·2024년 2월 5일
0

백준

목록 보기
16/31

📎 문제 출처


https://www.acmicpc.net/problem/11650

📌 문제 설명


❓ 풀이 방법


Arrays.sort를 사용하여 노드 배열을 Comparator를 통해 정렬한다.
Comparator의 compare 메서드를 재정의하여, 먼저 x 값을 기준으로 비교하고, x 값이 같으면 y 값을 기준으로 비교한다.
결과적으로, x 값이 같으면 y 값을 오름차순으로 정렬된다.

📌 Code


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        Integer n = Integer.parseInt(br.readLine());

        Node[] nodes = new Node[n];
        for(int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            Node node = new Node(x, y);
            nodes[i] = node;
        }

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

        for(Node node : nodes) {
            System.out.println(node.x + " " + node.y);
        }
    }


}

class Node {
    int x;
    int y;

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

0개의 댓글