본문 바로가기

프로그래밍_백준/Java

Java) 10814 나이순 정렬 (2차원 배열 정렬)

728x90
반응형

입력할 사람의 수를 입력하고

나이순, 먼저 입력한 순으로 정렬하여 출력하는 문제입니다.

 

2차원 배열을 이용해면 쉽게 풀 수 있습니다.

Arrays.sort(age_name,(a,b)->Integer.compare(Integer.parseInt(a[0]),Integer.parseInt(b[0])));  
          /* Arrays.sort 메서드를 이용해 나이 순으로 정렬. 
             여기서 람다 표현식 (a,b)->Integer.compare(Integer.parseInt(a[0]),Integer.parseInt(b[0]))가 사용되었는데,
             이는 a와 b 두 개의 문자열 배열을 받아, 각각 첫 번째 요소인 '나이'를 Integer로 변환한 후 비교하는 것을 의미합니다.
             결과적으로 오름차순 정렬됩니다.*/

 

 

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 스캐너 객체 생성
        int N; // 사람의 수를 저장할 변수 N 선언
        N = sc.nextInt(); // 사용자로부터 사람의 수를 입력받음
        sc.nextLine(); // 개행문자 제거

        String[][] age_name = new String[N][2]; // 사람의 수에 맞게 2차원 배열 생성. 각 행은 개개인을, 열은 그 사람의 나이와 이름을 나타냄
        
        for(int i=0;i<N;i++){
            String str = sc.nextLine();  // 한 줄을 읽어옴. 이 줄에는 나이와 이름이 공백으로 구분되어 있음.
            String[] list=str.split(" ");  // 공백을 기준으로 문자열 분리하여 list 배열에 저장
            age_name[i][0]=list[0];  // 분리된 첫 번째 요소(나이)를 age_name 배열에 저장
            age_name[i][1]=list[1];  // 분리된 두 번째 요소(이름)를 age_name 배열에 저장
        }
        
        Arrays.sort(age_name,(a,b)->Integer.compare(Integer.parseInt(a[0]),Integer.parseInt(b[0])));  
          /* Arrays.sort 메서드를 이용해 나이 순으로 정렬. 
             여기서 람다 표현식 (a,b)->Integer.compare(Integer.parseInt(a[0]),Integer.parseInt(b[0]))가 사용되었는데,
             이는 a와 b 두 개의 문자열 배열을 받아, 각각 첫 번째 요소인 '나이'를 Integer로 변환한 후 비교하는 것을 의미합니다.
             결과적으로 오름차순 정렬됩니다.*/
        
        for(int i=0;i<N;i++){
            System.out.println(age_name[i][0] +" "+ age_name[i][1]);   /* 정렬된 결과 출력. 
                                                                           각 인덱스에서 첫번째 열은 나이, 두번째 열은 이름입니다.*/
            
        }
        
        sc.close();   // 스캐너 종료
    }
}

 

728x90
반응형

'프로그래밍_백준 > Java' 카테고리의 다른 글

*Java) 백준 1966번 프린터 큐  (1) 2024.01.03
Java) 1764 듣보잡  (0) 2023.09.16
Java) 7568번 덩치  (0) 2023.09.16
Java) 18110번 SOLVED.AC (절사평균)  (0) 2023.09.01
Java) 1654번 랜선 자르기 (이진 탐색법)  (0) 2023.09.01