자바 문법을 잘 몰라서 Arrays.sort Override 구현에 어려움을 겪었다.
나는 2차원 배열 안에서 나이(int)와 이름(String)을 분리해서
Sorting 해야한다고 생각했다. (굉장히 복잡해짐)
-> Map 자료구조까지 생각해봤지만.. 중복이 안돼서 탈락.
정렬 알고리즘을 알았으면 쉽게 풀었을 문제였던 것 같다.
알고리즘
정렬
체감 난이도
★ ★ ★ ☆ ☆
다시 풀 수 있는가?
YES
1. Sorting Override
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] s1, String[] s2) {
return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
}
});
전체 코드 ▼
더보기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class BOJ10814 {
public void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[][] arr = new String[N][2];
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
arr[i][0] = st.nextToken();
arr[i][1] = st.nextToken();
}
Arrays.sort(arr, new Comparator<String[]>() {
@Override
public int compare(String[] s1, String[] s2) {
return Integer.parseInt(s1[0]) - Integer.parseInt(s2[0]);
}
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
sb.append(arr[i][0]).append(' ').append(arr[i][1]).append('\n');
}
System.out.println(sb);
}
public static void main(String[] args) throws Exception {
new BOJ10814().solution();
}
}