[백준/Java] 10825 국영수

HEETAE HEO·2022년 3월 3일
post-thumbnail

조건

조건의 경우 문제의 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]을 출력해준다.
        }
    }
}

profile
Android 개발 잘하고 싶어요!!!

0개의 댓글