본문 바로가기
Baekjoon

[백준] 5635번 - 생일 - Java

by jinjin98 2022. 12. 4.

 

나이가 가장 많은 순서대로 정렬하되, 나이가 같으면 생년월일에서 월이 빠른 순서로,

월이 같으면 생년월일에서 일이 빠른 순서로 정렬했습니다.

정렬한 리스트에서 나이가 가장 적은 사람인 마지막 요소를, 나이가 가장 많은 사람인 첫 번째 요소를 출력합니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.StringTokenizer;

public class p5635 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<Student> ar = new ArrayList<>();
        StringTokenizer st;

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

        for(int i=0; i<N; i++) {

            st = new StringTokenizer(br.readLine());

            String name = st.nextToken();
            int day = Integer.parseInt(st.nextToken());
            int month = Integer.parseInt(st.nextToken());
            int year = Integer.parseInt(st.nextToken());

            ar.add(new Student(name, day, month, year));
        }

        Collections.sort(ar, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                if(o1.year == o2.year) {

                    if (o1.month == o2.month) {
                        return o1.day - o2.day;
                    }

                    return o1.month - o2.month;
                }

                return o1.year - o2.year;
            }
        });

        System.out.println(ar.get(ar.size()-1).name + "\n" + ar.get(0).name);
    }

    static class Student {

        String name;
        int day;
        int month;
        int year;

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

댓글