[JAVA] 백준 5635번 생일 풀이

그린·2024년 3월 6일
0

PS

목록 보기
6/17

1) 문제

https://www.acmicpc.net/problem/5635

2) 접근 방법

그냥 Student 클래스 만들어서 name, day, month, year 필드 만들고
ArrayList<Student> 에다가 Student 정보들 넣고, 이를 정렬해서 출력해주면 된다.

근데 자바에서 정렬하는 게 자동완성 끄고 하니까 더 헷갈려서,, 이번에 제대로 정리를 해보려고 한다.

        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                if (s1.year == s2.year) {
                    if (s1.month == s2.month) {
                        return Integer.compare(s1.day, s2.day);
                    } else {
                        return Integer.compare(s1.month, s2.month);
                    }
                }
                return Integer.compare(s1.year, s2.year);
            }
        });
new Comparator<Student>() {

}

이런 형식으로 만들고,
@Override 해서 compare(Object o1, Object o2) 를 구현해주면 되는데,
여기에서 Integer.compare(o1.???, o2.???)를 해주면 알아서 오름차순으로 정렬되게 된다!

3) 코드

import java.util.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        int n = Integer.parseInt(br.readLine());
        ArrayList<Student> list = new ArrayList<Student>();
        for (int t = 0; t < n; t++) {
            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, new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                if (s1.year == s2.year) {
                    if (s1.month == s2.month) {
                        return Integer.compare(s1.day, s2.day);
                    } else {
                        return Integer.compare(s1.month, s2.month);
                    }
                }
                return Integer.compare(s1.year, s2.year);
            }
        });

        System.out.println(list.get(list.size() - 1).getName());
        System.out.println(list.get(0).getName());
    }
}

class Student {
    String name;
    int day;
    int month;
    int year;

    public Student(String name, int day, int month, int year) {
        this.name = name;
        this.day = day;
        this.month = month;
        this.year = year;
    }

    public String getName() {
        return this.name;
    }
}
profile
기록하자

0개의 댓글

관련 채용 정보