728x90
문제 5635번
[ 문제 풀이 ]
ArrayList<> 안에 넣어야 할 요소를 Student 클래스로 정의하고, Comparable을 implement 시켜 ArrayList<> 안에 요소를 넣을 때 정렬할 기준을 정의해줍니다.
나이가 적은 순으로 정렬하려면 연, 월, 일이 큰 순서대로(생일이 늦는 순서대로) 정렬 기준을 정의하면 됩니다. 입력받은 대로 ArrayList<>에 넣은 후, Collections.sort()을 사용하여 정의한 정렬 기준대로 정렬해줍니다.
[ 코드 ]
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
private static class Student implements Comparable<Student> {
String name;
int day, month, year;
public Student(String name, int day, int month, int year) {
this.name = name;
this.day = day;
this.month = month;
this.year = year;
}
@Override
public int compareTo(Student s) {
if (this.year == s.year) {
if (this.month == s.month) {
return s.day - this.day;
} else {
return s.month - this.month;
}
} else {
return s.year - this.year;
}
}
}
private static ArrayList<Student> list = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
String name = st.nextToken();
int day = Integer.parseInt(st.nextToken());
int month = Integer.parseInt(st.nextToken());
int year = Integer.parseInt(st.nextToken());
list.add(new Student(name, day, month, year));
}
Collections.sort(list);
bw.write(list.get(0).name + "\n" + list.get(list.size()-1).name);
bw.flush();
}
}
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 9251번: LCS (JAVA) (1) | 2023.11.02 |
---|---|
[Baekjoon] 백준 1316번: 그룹 단어 체커 (JAVA) (1) | 2023.10.31 |
[Baekjoon] 백준 10974번: 모든 순열 (JAVA) (0) | 2023.10.28 |
[Baekjoon] 백준 1240번: 노드 사이의 거리 (JAVA) (0) | 2023.10.26 |
[Baekjoon] 백준 2910번: 빈도 정렬 (JAVA) (0) | 2023.10.26 |