안녕하세요. 이번에는 백준 10814 나이순 정렬 문제를 풀어보려고 합니다.
https://www.acmicpc.net/problem/10814
Problem
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.
Solution
import java.io.*;
import java.util.*;
public class Main {
static class Customer {
int age;
String name;
Customer(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public String toString() {
return age + " " + name;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
Customer[] customer = new Customer[N];
for(int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
customer[i] = new Customer(Integer.parseInt(st.nextToken()), st.nextToken());
}
Arrays.sort(customer, (s1, s2) -> {
return s1.age - s2.age;
});
for(int i = 0; i < N; i++) {
sb.append(customer[i]).append("\n");
}
System.out.println(sb.toString());
}
}
이번 문제는 Sort 기능을 사용해서 나이 순으로 정렬하면 되는 문제이다. 이전에 1181 단어 정렬 문제를 풀어봤으면 쉽게 풀 수 있는 문제이다. 혹시 참고하려면 아래 글을 보면 좋을 듯하다.
https://echung93.tistory.com/30
Comparator 람다 표현
Arrays.sort(customer, (s1, s2) -> {
return s1.age - s2.age;
});
Comparator을 사용해서 나이를 오름차순으로 정렬하면 된다.
Performance
반응형
'백준 Algorithm > 백준 CLASS2' 카테고리의 다른 글
[백준] CLASS2 10828 스택 - JAVA [자바] (0) | 2023.10.11 |
---|---|
[백준] CLASS2 10816 숫자 카드 2 - JAVA [자바] (0) | 2023.10.10 |
[백준] CLASS2 9012 괄호 - JAVA [자바] (0) | 2023.10.08 |
[백준] CLASS2 4153 직각삼각형 - JAVA [자바] (0) | 2023.10.07 |
[백준] CLASS2 2798 블랙잭 - JAVA [자바] (2) | 2023.10.06 |