[JAVA] 나이순 정렬

NoHae·2025년 2월 27일

백준

목록 보기
15/106

문제 출처

단계별로 풀어보기 > 정렬 > 나이순 정렬
https://www.acmicpc.net/problem/10814

문제 설명

N명의 사람 나이, 이름이 주어질 때,
나이 순으로 정렬하고, 나이가 같으면 먼저 가입한 사람의 순서로 정렬하라.

접근 방법

사람의 정보를 Person 클래스로 저장하여 list에 저장한다.
저장한 list를 Collections.sort를 이용하여 Person.age 순으로 정렬한다.

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class 나이순_정렬 {
    public static class Person{
        int age;
        String name;

        public Person(int age, String name){
            this.age = age;
            this.name = name;
        }

    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());

        List<Person> list = new ArrayList<>();

        for(int i = 0; i<N; i++){
            st = new StringTokenizer(br.readLine());
            int age = Integer.parseInt(st.nextToken());
            String name = st.nextToken();
            list.add(new Person(age, name));
        }
        Collections.sort(list,(p1,p2) ->{
            return p1.age - p2.age;
        });

        StringBuilder sb  = new StringBuilder();

        for(int j = 0; j<N; j++){
            sb.append(list.get(j).age +" "+ list.get(j).name).append("\n");
        }
        bw.write(sb.toString());
        bw.flush();
        bw.close();
        br.close();
    }
}

알게된 점

JAVA에서 지원하는 정렬 중, int 배열의 정렬은 불안정한 정렬이다.
이외의 정렬은 안정 정렬이다.

문제푼 흔적

profile
노력 해보려고 하는 사람(00년생 소프트웨어융합학과, 24년 12월 부터 백엔드 및 코테 공부 시작)

0개의 댓글