본문 바로가기
백준 Algorithm/백준 CLASS2

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

by Echung 2023. 10. 9.

 안녕하세요. 이번에는 백준 10814 나이순 정렬 문제를 풀어보려고 합니다.

 

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

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net


Problem

 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.

사진 1. 문제


Solution

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

public class Main {
    
    static class Customer {
        int age;
        String name;
        
        Customer(int age, String name) {
            this.age = age;
            this.name = name;
        }
        
        @Override
        public String toString() {
            return age + " " + name;
        }
    }
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        int N = Integer.parseInt(br.readLine());
        Customer[] customer = new Customer[N];
        
        for(int i = 0; i < N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            customer[i] = new Customer(Integer.parseInt(st.nextToken()), st.nextToken());     
        }
        
        Arrays.sort(customer, (s1, s2) -> {
            return s1.age - s2.age;
        });
        
        for(int i = 0; i < N; i++) {
            sb.append(customer[i]).append("\n");
        }
        
        System.out.println(sb.toString());
    }
}

 

 이번 문제는 Sort 기능을 사용해서 나이 순으로 정렬하면 되는 문제이다. 이전에 1181 단어 정렬 문제를 풀어봤으면 쉽게 풀 수 있는 문제이다. 혹시 참고하려면 아래 글을 보면 좋을 듯하다.

 

https://echung93.tistory.com/30

 

[CLASS 2] 1181번 : 단어 정렬 - JAVA

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주

echung93.tistory.com

 

 Comparator 람다 표현

Arrays.sort(customer, (s1, s2) -> {
	return s1.age - s2.age;
});

 

 Comparator을 사용해서 나이를 오름차순으로 정렬하면 된다. 


Performance

사진 2. 실행 결과

반응형