백준 5635 생일 JAVA 풀이 (정렬, 시간복잡도)

2026. 3. 27. 16:32·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

이 문제는 N명의 이름과 생년월일이 주어졌을 때,
가장 나이가 많은 사람과 가장 어린 사람의 이름을 구하는 문제


📌접근 방법

이 문제는 정렬을 활용해서 해결

사람마다 이름, 일, 월, 년 정보를 하나로 묶어 관리해야 하므로
Person 객체를 만들어 저장

 

이후 생년월일을 기준으로 년 → 월 → 일 순서로 오름차순 정렬하면


가장 앞에는 가장 나이가 많은 사람,
가장 뒤에는 가장 어린 사람이 오게 된다.


📌핵심 아이디어

이 문제의 핵심은 생년월일 비교 기준을 정확하게 세우는 것

  • 년도가 작은 사람이 더 나이가 많다
  • 년도가 같으면 월 비교
  • 월도 같으면 일 비교
  • 정렬 후 첫 번째와 마지막 사람을 출력하면 된다

📌전체 코드

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

public class Main {

    static class Person {
        String name;
        int d, m, y;

        public Person(String name, int d, int m, int y) {
            this.name = name;
            this.d = d;
            this.m = m;
            this.y = y;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        Person[] arr = new Person[N];

        for(int i = 0; i < N; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            String name = st.nextToken();
            int d = Integer.parseInt(st.nextToken());
            int m = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            arr[i] = new Person(name, d, m, y);
        }

        Arrays.sort(arr, (a, b) -> {
            if(a.y != b.y) return a.y - b.y;
            if(a.m != b.m) return a.m - b.m;
            return a.d - b.d;
        });

        System.out.println(arr[N - 1].name);
        System.out.println(arr[0].name);
    }
}

📄 정리

이 문제는 정렬 기준만 정확히 세우면 쉽게 해결할 수 있는 문제
날짜 비교 문제에서는 항상 년 → 월 → 일 순서로 비교하는 습관을 들이면 좋다.

728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

백준 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 JAVA 풀이 (수학, 시간복잡도)  (0) 2026.03.29
백준 11931 수 정렬하기 4 JAVA 풀이 (정렬, 시간복잡도)  (0) 2026.03.28
백준 9656 돌 게임 2 JAVA 풀이 (게임이론, 시간복잡도)  (0) 2026.03.26
백준 2669 직사각형 네 개의 합집합의 면적 JAVA 풀이 (브루트포스, 구현, 시간복잡도)  (0) 2026.03.25
백준 13909 창문 닫기 JAVA 풀이 (수학, O(1))  (0) 2026.03.24
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 24262 알고리즘 수업 - 알고리즘의 수행 시간 1 JAVA 풀이 (수학, 시간복잡도)
  • 백준 11931 수 정렬하기 4 JAVA 풀이 (정렬, 시간복잡도)
  • 백준 9656 돌 게임 2 JAVA 풀이 (게임이론, 시간복잡도)
  • 백준 2669 직사각형 네 개의 합집합의 면적 JAVA 풀이 (브루트포스, 구현, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN N
      • 코테(Solved.ac + Programmers) N
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    solved.ac
    피보나치
    코딩테스트
    정렬
    level0
    java
    springboot
    정보처리기사
    알고리즘
    문자열
    자료구조
    자바
    시뮬레이션
    기출문제
    브루트포스
    정처기오답노트
    백엔드개발자
    프로그래머스
    정처기
    level1
    배열
    정처기실기
    Level2
    실기
    dp
    수학
    완전탐색
    백준
    정보처리기사 실기 기출문제
    구현
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
백준 5635 생일 JAVA 풀이 (정렬, 시간복잡도)
상단으로

티스토리툴바