IT/알고리즘

[BOJ] 나이순 정렬 10814.java

Terriermon 2022. 5. 25. 10:04

준비 겸, JAVA Stream에 익숙해지기 위해.

 

 

 문제

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

나이 - 이름으로 입력 받았을 때, 나이 순으로 정렬하고, 같은 경우 입력 순서대로 정렬한다.

 

 

 

 해설 및 코드

public class 나이순정렬 {

    public static class User{
        int age;
        String name;

        User(int a, String n){
            this.age = a;
            this.name = n;
        }

        public int getAge(){
            return this.age;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

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

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

        for(int i=0; i<N; i++){
            String[] st = br.readLine().split(" ");
            int age = Integer.parseInt(st[0]);
            String name = st[1];

            list.add(new User(age, name));
        }

        list = list.stream()
                .sorted(Comparator.comparingInt(User::getAge))
                .collect(Collectors.toList());

        for(User user : list){
            System.out.println(user.age + " " + user.name);
        }

    }
}

list에 먼저 순서대로 정렬한 다음, stream sorted를 이용해 age로 정렬해서 출력하면 끝

 

 

 

Java 문법 정리

Comparator.comparingInt(User::getAge)

- Comparator 라이브러리를 이용해서 Int형 비교를 진행한다.

- User::getAge는 User 객체의 getAge를 불러오는 데, 함수만 된다.