반응형
https://www.acmicpc.net/problem/5635
import java.io.*;
import java.time.LocalDate;
import java.util.*;
public class Main {
static int N;
static List<Person> people = new ArrayList<>();
static int stoi(String s) {
return Integer.parseInt(s);
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = stoi(st.nextToken());
while (N-- > 0) {
st = new StringTokenizer(br.readLine());
String name = st.nextToken();
int day = stoi(st.nextToken());
int month = stoi(st.nextToken());
int year = stoi(st.nextToken());
LocalDate date = LocalDate.of(year, month, day);
people.add(new Person(name, date));
}
Collections.sort(people);
System.out.println(people.get(people.size() - 1).name);
System.out.println(people.get(0).name);
}
static class Person implements Comparable<Person> {
String name;
LocalDate date;
public Person(String name, LocalDate date) {
this.name = name;
this.date = date;
}
@Override
public int compareTo(Person o) {
return date.compareTo(o.date);
}
}
}
처음에 N으로 이후의 입력 줄 수를 받고,
매 입력 한 줄마다 이름, day, month, year를 입력 받는다.
객체를 따로 만들어서 풀었다.
LocalDate는 연월일을 입력 받아서 이를 비교하기 쉽게 compareTo 메서드를 제공해준다.
그리고 Person 객체도 Comparable 인터페이스를 구현하면 객체 간 비교를 할 수 있다.
이러려면 compareTo 메서드를 구현해야하는데, LocalDate 필드를 비교하도록 했다.
그 뒤론 입력을 받아 객체 리스트로 만들고, 이를 정렬하고, 처음과 끝의 사람의 이름을 출력해주면 된다.
반응형
'알고리즘 🤔' 카테고리의 다른 글
[백준 자바 1977] 완전제곱수 (브론즈2) (0) | 2024.06.25 |
---|---|
[백준 자바 1145] 적어도 대부분의 배수 (브론즈1) (0) | 2024.06.23 |
[백준 자바 9093] 단어 뒤집기 (브론즈1) (0) | 2024.06.19 |
[백준 자바 19532] 수학은 비대면강의입니다. (브론즈2) (0) | 2024.06.14 |
[백준 자바 10824] 네 수 (브론즈3) (2) | 2024.06.11 |