ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 10825) 국영수 - Java
    백준코딩일기 2020. 2. 19. 08:10

     

     

     

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    import java.io.*;
    import java.util.*;
    public class Main {
     
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
            
            //도현이네 반 학생 수 입력받음
            int N = Integer.parseInt(br.readLine());
            String[][] member = new String[N][4]; 
            for(int i=0; i<N; i++) {    //학생들의 이름, 성적을 입력받아 배열에 저장
                StringTokenizer st = new StringTokenizer(br.readLine());
                member[i][0= st.nextToken();
                member[i][1= st.nextToken();
                member[i][2= st.nextToken();
                member[i][3= st.nextToken();
            }
            
            //Comparator 를 사용하여 비교
            Arrays.sort(member, new Comparator<String[]>() {
                @Override
                public int compare(String[] o1, String[]o2) {
                    //국어성적이 다를 때, 감소하는 순서로
                    if(Integer.parseInt(o2[1]) != Integer.parseInt(o1[1]) )
                        return Integer.compare(Integer.parseInt(o2[1]), Integer.parseInt(o1[1]));
                    else {    //국어성적이 같을 때, 영어점수 증가 순서로
                        if(Integer.parseInt(o2[2]) != Integer.parseInt(o1[2]) )
                            return Integer.compare(Integer.parseInt(o1[2]), Integer.parseInt(o2[2]));
                        else { // 국어, 영어 점수가 같으면, 수학점수 감소하는 순서로
                            if(Integer.parseInt(o2[3]) != Integer.parseInt(o1[3]) )
                                return Integer.compare(Integer.parseInt(o2[3]), Integer.parseInt(o1[3]));
                            else { // 국영수가 같으면 이름으로 오름차순
                                return o1[0].compareTo(o2[0]);
                            }
                        }
                    }
                }
            });
            
            for(int i=0; i<N; i++) {
                bw.write(member[i][0+ "\n");
            }
            br.close(); bw.flush(); bw.close();    
        }
    } cs

    '백준코딩일기' 카테고리의 다른 글

    10808) 알파벳 개수 C++  (0) 2020.10.16
    11652) 카드 - JAVA  (0) 2020.03.08
    17103) 골드바흐 파티션 - Java  (0) 2020.01.29
    9020) 골드바흐의 추측  (0) 2020.01.29
    6588) 골드바흐의 추측  (0) 2020.01.29

    댓글

Designed by Tistory.