백준

[백준] 10814번 : 나이순 정렬 - JAVA [자바]

종식당 2025. 3. 3. 10:15
728x90
반응형

 

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

📝 문제 설명

입력받은 정수만큼의 사람의 나이와 이름을 입력받는다. 그 후 사람들을 나이 순으로 정렬한다. 

만약 나이가 같으면 먼저 입력한 순서대로 정렬하여 출력하면 된다.

✨ 제출 코드

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

public class Main {
    public static class Info{
        int age;
        String name;
        
        public Info(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));
        int N = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();

        List<Info> lst = new ArrayList<>();

        for(int i = 0; i < N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            lst.add(new Info(Integer.parseInt(st.nextToken()), st.nextToken()));
            
        }

        Collections.sort(lst, (a,b) -> Integer.compare(a.age, b.age));

        for(Info person : lst){
            sb.append(person.age).append(" ").append(person.name).append("\n");
        }

        System.out.println(sb);
    }
}

 

✌️ 코드 설명

먼저 입력받은 정수 만큼의 사람들이 나이와 이름을 저장할 건데 이때 class를 하나 만들어서 사람들의 나이와 정보를 하나의 객체로 관리했다. 이러면 리스트에 추가할 때도 객체 전체를 추가할 수 있어 더 편리한 것 같다. 
그래서 사람들의 정보를 담고 있는 Info 타입의 리스트를 만들었고 이 리스트를 정렬해주었다.
정렬 조건은 이 객체의 나이 순으로 오름차순으로 정렬했으며 리스트에 넣을 때 입력받은 순서로 넣어줬으니 나이가 같으면 입력받은 순으로 정렬될 것이다.

그리고 StringBuilder로 출력 형식을 맞춰주었다.

♨️ 마무리

파이썬으로 정렬 문제를 풀 때 감을 잡기 위해서 엄청 많이 풀어본 기억이 있는데 자바 정렬이 더 복잡하고 내가 아직 미숙한 거 같아서 자바로도 정렬 문제를 많이 풀어보려 한다.

그리고 하나의 객체에 대해서 정보를 여러 개 가져와 처리할 때는 class를 만들어서 풀이를 진행하는 게 나아 보인다.

 

728x90
반응형