문제의 핵心
1. 나이, 이름의 정보를 입력받은 뒤에 나이를 기준으로 정렬한다.
2. 카운팅 정렬을 활용하여 빠르게 정렬한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Q1_10814 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
// 입력되는 나이의 범위 : 1 ~ 200
StringBuilder[] p = new StringBuilder[201];
// 객체 배열의 인덱스에 각 StringBuilder객체를 생성해준다.
for(int i=0; i< p.length; i++) {
p[i] = new StringBuilder();
}
// 객체 배열의 인덱스에 각 StringBuilder객체를 생성해준다.
for(int i=0; i<num; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int age = Integer.parseInt(st.nextToken());
String name = st.nextToken();
//카운팅 정렬: 나이를 index로 하여 해당 배열에 나이와 이름을 append() 한다.
p[age].append(age).append(' ').append(name).append('\n');
}
StringBuilder sb = new StringBuilder();
for(StringBuilder val : p) {
sb.append(val);
}
System.out.println(sb);
}
}
✅ 또 다른 방법으로는 Collection.sort로 Comparator를 이용하는 방법이 있다.
이 방법으로는 HashMap, List 를 이용했다.
'이론 > Data Structure , Algorithm' 카테고리의 다른 글
[210929] 백준 2751번 문제 풀이 / 수 정렬하기 2 (0) | 2021.09.28 |
---|---|
[210916] 백준 5397번 문제 풀이 / 키로거 (0) | 2021.09.16 |
[210916] 백준 1966번 문제 풀이 / 프린터 큐 (0) | 2021.09.16 |
[210916] 백준 1874번 문제 풀이 / 스택 수열 (0) | 2021.09.16 |
[210915] 백준 2798번 문제 풀이 / 블랙잭 (0) | 2021.09.15 |