백준

백준 5635 생일(Java)

Park DJ 2023. 1. 23. 13:31

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

 

5635번: 생일

어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 문제입니다. 먼저 학생들의 정보를 배열로 입력받은 후 생일을 비교하여 최대와 최소일 때의 인덱스 값을 찾아내어 이름을 출력하면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int max = 0;
    int min = 0;
    int n = sc.nextInt();
    String[][] arr = new String[n][4];

    for(int i = 0; i < n; i++) {;
      arr[i][0] = sc.next();
      arr[i][1] = sc.next();
      arr[i][2] = sc.next();
      arr[i][3] = sc.next();
    }

    for(int i = 0; i < n; i++) {
      if(Integer.parseInt(arr[i][3]) > Integer.parseInt(arr[min][3])) min = i;
      else if(Integer.parseInt(arr[i][3]) == Integer.parseInt(arr[min][3]) && Integer.parseInt(arr[i][2]) > Integer.parseInt(arr[min][2])) min = i;
      else if(Integer.parseInt(arr[i][3]) == Integer.parseInt(arr[min][3]) && Integer.parseInt(arr[i][2]) == Integer.parseInt(arr[min][2])
              && Integer.parseInt(arr[i][1]) > Integer.parseInt(arr[min][1])) min = i;
    }

    for(int i = 0; i < n; i++) {
      if(Integer.parseInt(arr[i][3]) < Integer.parseInt(arr[max][3])) max = i;
      else if(Integer.parseInt(arr[i][3]) == Integer.parseInt(arr[max][3]) && Integer.parseInt(arr[i][2]) < Integer.parseInt(arr[max][2])) max = i;
      else if(Integer.parseInt(arr[i][3]) == Integer.parseInt(arr[max][3]) && Integer.parseInt(arr[i][2]) == Integer.parseInt(arr[max][2])
              && Integer.parseInt(arr[i][1]) < Integer.parseInt(arr[max][1])) max = i;
    }

    System.out.println(arr[min][0]);
    System.out.println(arr[max][0]);
  }
}