

조건의 경우 문제의 1,2,3,4 가 조건이다

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class main {
public static int N; //학생의 수
public static String[][] arr; // 2차원 배열에서 첫번째는 학생의 수 두번째는 이름 국영수의 값이 들어갈수 있도록 할 것이다.
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
arr = new String[N][4]; // 2차원 배열을 생성한다. 이름,국영수를 위해 4를 넣어준다.
for (int i = 0; i < N; i++) {
arr[i] = br.readLine().split(" ");
}
Arrays.sort(arr, new Comparator<String[]>() { arr배열을 compare을 통해 sort한다.
@Override
public int compare(String[] arr1, String[] arr2) {
if (Integer.parseInt(arr1[1]) == Integer.parseInt(arr2[1])) {
if (Integer.parseInt(arr1[2]) == Integer.parseInt(arr2[2])) {
if (Integer.parseInt(arr1[3]) == Integer.parseInt(arr2[3])) {
//국어,영어,수학의 점수가 같으면 이름을 사전순으로 정렬
return arr1[0].compareTo(arr2[0]);
}
//국어,영어 점수가 같다면 수학점수를 내림차순으로 정렬
return Integer.compare(Integer.parseInt(arr2[3]), Integer.parseInt(arr1[3]));
}
//국어 점수가 같고 영어점수가 다르다면 영어점수를 오름차순으로 정렬
return Integer.compare(Integer.parseInt(arr1[2]), Integer.parseInt(arr2[2]));
}
//국어 점수를 내림차순으로 정렬한다.
return Integer.compare(Integer.parseInt(arr2[1]), Integer.parseInt(arr1[1]));
}
});
for (int i = 0; i < N; i++) {
System.out.println(arr[i][0]);
//해당 학생들의 이름을 출력해야하니 [i][0]을 출력해준다.
}
}
}