입력 : 첫째 줄 - 학생 수 (1 ≤ 학생 수 ≤ 100)
둘째 줄부터 - 이름 dd mm yyyy (1990 ≤ yyyy ≤ 2010, 1 ≤ mm ≤ 12, 1 ≤ dd ≤ 31)
단, 이름이 같거나 생일이 같은 사람은 없다.
출력 : 첫째 줄 - 가장 나이가 적은 사람의 이름
둘째 줄 - 가장 나이가 많은 사람의 이름
O(NlogN)
팀소트 알고리즘
생년월일을 오름차순으로 정렬하면 맨 처음에 정렬된 생년월일이 가장 나이가 많다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[][] person = new String[n][4];
for (int i = 0; i < n; i++) {
person[i][0] = sc.next(); //이름
person[i][1] = sc.next(); //일
person[i][2] = sc.next(); //월
person[i][3] = sc.next(); //년도
}
Arrays.sort(person, new Comparator<String[]>() {
public int compare(String[] a, String[] b) {
if (!a[3].equals(b[3])) {
return Integer.parseInt(a[3]) - Integer.parseInt(b[3]);
} else {
if (!a[2].equals(b[2])) {
return Integer.parseInt(a[2]) - Integer.parseInt(b[2]);
} else {
return Integer.parseInt(a[1]) - Integer.parseInt(b[1]);
}
}
}
});
System.out.println(person[n-1][0]); //가장 나이가 적은 사람
System.out.println(person[0][0]); //가장 나이가 많은 사람
sc.close();
}
}