본문 바로가기
🧑‍💻코딩 테스트/백준 (BOJ)

[코딩테스트/백준 알고리즘] 11651번 : 좌표 정렬하기 2 (Java, 자바 풀이)

by 코코의 주인 2022. 8. 10.

문제

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

 

11651번: 좌표 정렬하기 2

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net


문제 설명


문제 풀이

좌표 정렬하기 문제와 같은 방법으로 처리할 수 있다.

2022.08.01 - [🧑‍💻코딩 테스트/백준 (BOJ)] - [코딩 테스트/백준 알고리즘] 11650번 : 좌표 정렬하기 (Java 풀이)

 

 

참고 :

2022.08.01 - [✏️Java 공부/기타 등등] - [Java 공부/기타] 객체 정렬하기 (Comparable & Comparator)


코드

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

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        int[][] arr = new int[n][2];
        
        for(int i = 0; i < n; i++) {
            String[] tmp = br.readLine().split(" ");
            arr[i][0] = Integer.parseInt(tmp[0]);
            arr[i][1] = Integer.parseInt(tmp[1]);
        }
        Arrays.sort(arr, new Comparator<int[]>(){
           @Override
            public int compare(int[] a1, int[] a2) {
                if(a1[1] == a2[1]) {
                    return a1[0] - a2[0];
                }
                else {
                    return a1[1] - a2[1];
                }
            }
        });
        
        for(int[] a : arr) {
            System.out.println(a[0] + " " + a[1]);
        }
    }
}

댓글