Algorithms/Java

백준 10814: 나이순 정렬 (java)

Jenn28 2023. 12. 28. 21:21

자바 문법을 잘 몰라서 Arrays.sort Override 구현에 어려움을 겪었다.

 

나는 2차원 배열 안에서 나이(int)와 이름(String)을 분리해서

Sorting 해야한다고 생각했다. (굉장히 복잡해짐)

-> Map 자료구조까지 생각해봤지만.. 중복이 안돼서 탈락.

 

정렬 알고리즘을 알았으면 쉽게 풀었을 문제였던 것 같다.


 

알고리즘

정렬

 

체감 난이도

★ ★ ★ ☆ ☆

 

다시 풀 수 있는가?

YES

 


 

1. Sorting Override

        Arrays.sort(arr, new Comparator<String[]>() {
            @Override
            public int compare(String[] s1, String[] s2) {
                return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
            }
        });

 

전체 코드 ▼

더보기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;

public class BOJ10814 {
    public void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        String[][] arr = new String[N][2];

        for (int i = 0; i < N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            arr[i][0] = st.nextToken();
            arr[i][1] = st.nextToken();
        }

        Arrays.sort(arr, new Comparator<String[]>() {
            @Override
            public int compare(String[] s1, String[] s2) {
                return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
            }
        });

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < N; i++) {
            sb.append(arr[i][0]).append(' ').append(arr[i][1]).append('\n');
        }

        System.out.println(sb);
    }

    public static void main(String[] args) throws Exception {
        new BOJ10814().solution();
    }
}