🟦/백준

[실버 5] 생일

진뚱이용 2023. 2. 2. 18:15

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

 

5635번: 생일

어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.

www.acmicpc.net

그냥 정렬 재정의 해서 하면 되겠는데?

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

class People {
    String name;
    int year;
    int month;
    int day;

    People(String name, int day, int month, int year) {
        this.name = name;
        this.year = year;
        this.month = month;
        this.day = day;
    }
}

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

        int N = Integer.parseInt(br.readLine());
        StringTokenizer st;
        ArrayList<People> peoples = new ArrayList<>();
        StringBuilder sb = new StringBuilder();

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

        Collections.sort(peoples, new Comparator<People>() {
            @Override
            public int compare(People o1, People o2) {
                if (o1.year < o2.year)
                    return 1;
                else if (o1.year > o2.year)
                    return -1;
                else {
                    if (o1.month < o2.month)
                        return 1;
                    else if (o1.month > o2.month)
                        return -1;
                    else {
                        if (o1.day < o2.day)
                            return 1;
                        else if (o1.day > o2.day)
                            return -1;
                        else
                            return 0;
                    }
                }
            }
        });


        sb.append(peoples.get(0).name+"\n"+peoples.get(peoples.size()-1).name+"\n");
        System.out.println(sb);

    }
}