JuSeok

5635번

문제

  • 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 문제

문제 해결 순서

  1. 한 학생의 정보가 한 줄로 주어지므로 입력받은 한 줄을 이름 생년월일로 나눔
  2. Student 클래스 배열을 만들어 학생 정보를 입력
  3. Arrays.sort의 compare을 오버라이드해 나이순으로 정렬
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

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

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n = sc.nextInt();
        Student students[] = new Student[n];
        sc.nextLine();
        for (int i = 0; i < n; i++){
            String info = sc.nextLine();
            String temp[] = info.split(" ");
            String name = temp[0];
            int day = Integer.parseInt(temp[1]);
            int month = Integer.parseInt(temp[2]);
            int year = Integer.parseInt(temp[3]);
            students[i] = new Student(name, day, month, year);
        }

        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                if(o1.year != o2.year){
                    return o1.year - o2.year;
                }
                else if(o1.month != o2.month){
                    return o1.month - o2.month;
                }
                else{
                    return o1.day - o2.day;
                }
            }
        });

        System.out.println(students[students.length - 1].name);
        System.out.println(students[0].name);
    }
}

Tags