주어진 온라인 저지 회원의 수 N과 각 회원의 나이와 이름이 주어집니다. 이때, 회원들을 나이가 증가하는 순으로 정렬하되, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성해야 합니다.
주어진 회원 정보를 객체로 표현하기 위해 Member 클래스를 생성합니다. 이 클래스에는 나이(age)와 이름(name)을 저장할 수 있는 필드를 정의합니다.
회원 정보를 담을 ArrayList를 생성하고, 입력을 받아서 각 회원을 Member 객체로 만들어 ArrayList에 저장합니다.
Comparator를 사용하여 회원을 정렬합니다. 먼저 나이를 기준으로 오름차순으로 정렬하되, 나이가 같은 경우에는 입력 순서대로 정렬합니다.
정렬된 회원 정보를 출력합니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Member {
int age;
String name;
public Member(int age, String name) {
this.age = age;
this.name = name;
}
}
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
ArrayList<Member> members = new ArrayList<>();
// 회원 정보 입력
for (int i = 0; i < N; i++) {
String[] input = br.readLine().split(" ");
int age = Integer.parseInt(input[0]);
String name = input[1];
members.add(new Member(age, name));
}
// Comparator를 이용하여 회원을 정렬
Collections.sort(members, new Comparator<Member>() {
@Override
public int compare(Member m1, Member m2) {
if (m1.age == m2.age) {
return 0; // 나이가 같으면 순서 유지
}
return Integer.compare(m1.age, m2.age); // 나이 오름차순 정렬
}
});
// 정렬된 회원 정보 출력
for (Member member : members) {
System.out.println(member.age + " " + member.name);
}
}
}
이 코드는 주어진 회원 정보를 나이가 증가하는 순으로 정렬하되, 나이가 같은 경우에는 입력 순서대로 정렬하는 기능을 수행합니다. 회원 정보를 객체로 표현하기 위해 Member 클래스를 정의하고, Comparator를 사용하여 회원을 정렬합니다. 최종적으로 정렬된 회원 정보를 출력합니다.