안녕하세요. 이번에는 백준 10814 나이순 정렬 문제를 풀어보려고 합니다.
https://www.acmicpc.net/problem/10814
10814번: 나이순 정렬
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을
www.acmicpc.net
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
[CLASS 2] 1181번 : 단어 정렬 - JAVA
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주
echung93.tistory.com
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 |