백준 5635번 생일

이상민·2023년 9월 19일
0

알고리즘

목록 보기
56/128
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Birthday {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        List<Member> list = new ArrayList<>();
        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());
            Member member = new Member(name,day,month,year);
            list.add(member);
        }
        Member maxage = new Member("k",32,13,2011);
        Member minage = new Member("a",0,0,1989);

        for (int i = 0; i < N; i++) {
            Member mem = list.get(i);
            if(mem.year<maxage.year){
                maxage = mem;
            }
            else if(mem.year==maxage.year){
                if(mem.month<maxage.month){
                    maxage = mem;
                }
                else if(mem.month==maxage.month){
                    if(mem.day<maxage.day){
                        maxage = mem;
                    }
                }
            }
            if(mem.year>minage.year){
                minage = mem;
            }
            else if(mem.year==minage.year){
                if(mem.month>minage.month){
                    minage = mem;
                }
                else if(mem.month==minage.month){
                    if(mem.day>minage.day){
                        minage = mem;
                    }
                }
            }
        }
        System.out.println(minage.name);
        System.out.println(maxage.name);


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

풀이 방법

서로 다른 자료형을 list에 담을때 class를 생성해서 그클래스를 list에 담아서 접근한다.

  1. Member클래스를 만들고 입력값을 담은 뒤, list에 담는다.
  2. Member에서 나올 수 있는 최대값, 최소값 Member를 생성해서 list와 비교한다.
  3. year비교, 같으면 month비교, 같으면 day비교를 통해 최대나이, 최소 나이를 구한다.
  4. 최대,최소 나이의 멤버를 minage,maxage에 담고, 해당멤버의 이름을 출력한다.

후기

서로 다른 자료형을 묶어서 접근해야할 일이 많은데, 기본적인 형식으로 연습하기 좋았던 문제다.

profile
개린이

0개의 댓글