# 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);
    }
}
#BOJ #구현 #정렬
last updated: 11/17/2021, 2:42:26 PM