5635번
문제
- 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 문제
문제 해결 순서
- 한 학생의 정보가 한 줄로 주어지므로 입력받은 한 줄을 이름 생년월일로 나눔
- Student 클래스 배열을 만들어 학생 정보를 입력
- 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);
}
}