728x90
문제
https://www.acmicpc.net/problem/10814
접근 방법
- 회원을 나이순으로 정렬하면 되는 문제입니다.
- Compable과 Comparator중 고민을 했었지만 나이순으로 정렬하는 것은 Person을 정렬할때 웬만하면 나이순으로 정렬한다는 것을 생각하여 Comparable을 구현했습니다.
- 하지만 정렬기준이 특별하거나, 정렬을 여러 배열에서 해야 한다면 Comparator로 구현할 것입니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
static class Person implements Comparable<Person>{
int age;
String name;
public Person(int age, String name) {
this.age = age;
this.name = name;
}
@Override
public int compareTo(Person o){
return this.age-o.age;
}
}
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int N;
private static ArrayList<Person> list = new ArrayList<>();
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
for(int i = 0 ; i < N ; i++){
st = new StringTokenizer(br.readLine());
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
list.add(new Person(age,name));
}
}
//실행
public static void process() {
//ArrayList로 구현했기 때문에 Collections.sort 했습니다. [] 배열이면 Arrays.sort
Collections.sort(list);
for(Person p : list){
sb.append(p.age).append(" ").append(p.name).append("\n");
}
System.out.println(sb.toString());
}
public static void main(String[] args) throws Exception {
input();
process();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 10816번 : 숫자 카드 2 (0) | 2024.05.07 |
---|---|
[Java] 백준 10773번 : 제로 (0) | 2024.05.07 |
[Java] 백준 9012번 : 괄호 (0) | 2024.05.06 |
[Java] 백준 7568번 : 덩치 (0) | 2024.05.06 |
[Java] 백준 4949번 : 균형잡힌 세상 (0) | 2024.05.06 |