자료구조&알고리즘/백준
10814번: 나이순 정렬 [JAVA]
yong_ღ'ᴗ'ღ
2023. 7. 16. 22:43
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
접근 방식)
정렬 기준을 새로 정의해주면 된다.
1. 회원 클래스를 만듦 (가입순서, 나이, 이름 속성으로 가짐)
2. 회원을 리스트로 받아서, 정렬기준을 새로 정의하고, 정렬해준다.
3. 출력
package codingTestStudy.week1;
import java.io.*;
import java.util.*;
public class B_10814 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
List<Member> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
list.add(new Member(i, age, name));
}
// 나이 순 오름차순 정렬
// 나이 같으면, 먼저 입력한 순서(order) 오름차순 정렬
Collections.sort(list, (m1, m2) -> {
if (m1.age == m2.age)
return m1.order - m2.order;
return m1.age - m2.age;
});
StringBuilder sb = new StringBuilder();
for (Member m : list)
sb.append(m.age).append(' ').append(m.name).append('\n');
System.out.print(sb);
}
}
class Member {
int order;
int age;
String name;
public Member(int order, int age, String name) {
this.order = order;
this.age = age;
this.name = name;
}
}