CodeClover

[JAVA_백준 10814] 나이순 정렬 본문

코딩테스트

[JAVA_백준 10814] 나이순 정렬

coding dew 2025. 1. 7. 22:59

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

 

📌 문제 탐색하기

나이가 오름차순으로 정렬되어야 하고, 나이가 동일한 경우 가입한 순서대로 출력하면 된다. 

 

📌 가능한 시간복잡도

1. 입력받은 데이터를 배열으로 저장해야하고, 나이에 따라서 정렬하기 위해서 Arrays.sort()를 사용해야합니다. 

    입력받기 => 시간 복잡도 : O(N)

    정렬하기 => 시간 복잡도 : O(N logN)  

 

결과적으로...  O(N logN) 이라고 생각함.


📌 코드 설계하기

1. 회원 수 N의 값과, 회원 이름 배열을 입력받습니다. 

2. 입력 값을 나이 기준으로 오름차순으로 정렬합니다.

3. 나이가 동일한 경우 가입 순서대로 정렬합니다.


📌 정답 코드

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        StringBuilder  sb = new StringBuilder();
        
        Member[] members = new Member[n];

        for (int i = 0; i < n; i++) {
            int age = sc.nextInt();
            String name = sc.next();
            members[i] = new Member(age, name, i);
        }
        Arrays.sort(members, (a, b) -> {
            if (a.age == b.age) {
                return Integer.compare(a.order, b.order);
            }
            return Integer.compare(a.age, b.age);
        });

        for (Member member : members) {
            sb.append(member.age).append(" ").append(member.name).append("\n");
        }
        System.out.print(sb);
    }

    static class Member {
        int age;
        String name;
        int order; 

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