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);
}
}