import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(bf.readLine());
String[][] score = new String[num][4];
for (int i = 0; i<num; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
score[i][0] = st.nextToken();
score[i][1] = st.nextToken();
score[i][2] = st.nextToken();
score[i][3] = st.nextToken();
}
Arrays.sort(score, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
if (Integer.parseInt(o1[1]) != Integer.parseInt(o2[1])) {
return Integer.parseInt(o2[1]) - Integer.parseInt(o1[1]);
} else if (Integer.parseInt(o1[2]) != Integer.parseInt(o2[2])) {
return Integer.parseInt(o1[2]) - Integer.parseInt(o2[2]);
} else if (Integer.parseInt(o1[3]) != Integer.parseInt(o2[3])) {
return Integer.parseInt(o2[3]) - Integer.parseInt(o1[3]);
} else {
// return o1[0].charAt(0) - o2[0].charAt(0);
return o1[0].compareTo(o2[0]);
}
}
});
StringBuilder sb = new StringBuilder();
for (int i = 0; i<score.length; i++) {
sb.append(score[i][0]).append('\n');
}
System.out.print(sb);
}
}
이전에 풀어본 방법인 String[][]을 사용하여 풀겠다.
각 배열에 숫자를 입력받아 채워준다.
정렬하는 로직을 조건에 맞게 지정해준다.
StringBuilder에 문자를 저장해서 출력해준다.