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 |