# BOJ05635 생일
https://www.acmicpc.net/problem/5635 (opens new window)
어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구한다.
# Person
학생 정보를 담기 위한 Person이다.
private static class Person {
private String name;
private String birth;
public Person(String name, String birth) {
this.name = name;
this.birth = birth;
}
}
저장되는 birth 정보를 기반으로 정렬을 진행할 예정이다.
# 제출 코드
for (int i = 0; i < n; i++) {
String name = scanner.next();
String day = scanner.next();
String month = scanner.next();
String year = scanner.next();
if (day.length() == 1) {
day = "0" + day;
}
if (month.length() == 1) {
month = "0" + month;
}
String birth = year + month + day;
Person person = new Person(name, birth);
persons.add(person);
}
year, month, day를 활용하여 하나의 문자열로 만들어 준 뒤 birth를 기준으로 오름차순 정렬을 진행한다.
persons.sort(Comparator.comparing(o -> o.birth));
나이가 작아지는 순서로 출력되는 것을 확인할 수 있다.
Person{name='Jerry', birth='19900918'}
Person{name='Garfield', birth='19900920'}
Person{name='Alice', birth='19901230'}
Person{name='Mickey', birth='19911001'}
Person{name='Tom', birth='19930815'}
아래는 최종 제출 코드이다.
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class BOJ5635 {
private static class Person {
private String name;
private String birth;
public Person(String name, String birth) {
this.name = name;
this.birth = birth;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
List<Person> persons = new ArrayList<>();
for (int i = 0; i < n; i++) {
String name = scanner.next();
String day = scanner.next();
String month = scanner.next();
String year = scanner.next();
if (day.length() == 1) {
day = "0" + day;
}
if (month.length() == 1) {
month = "0" + month;
}
String birth = year + month + day;
Person person = new Person(name, birth);
persons.add(person);
}
persons.sort(Comparator.comparing(o -> o.birth));
System.out.println(persons.get(persons.size() - 1).name);
System.out.println(persons.get(0).name);
}
}