[분류]

  • 소팅



[문제링크]

[요구사항]

  1. 국어 점수가 감소하는 순서로 정렬한다.

  2. 국어 점수가 같으면 영어점수가 증가하는 순서로 정렬한다.

  3. 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 정렬한다.

  4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 정렬한다.


단순히 조건에 맞추어 소팅을 하면된다.



[풀이]

  1. 빈 문자열이면 그대로 출력한다.
  2. v에 대해서 재귀적으로 solution 함수를 수행해준다.
  3. solution이 수행된 v와 u를 가지고 검사를 하고, 조건에 맞게 합치고 출력한다.



[코드]

//baekjoon_10825_국영수

import java.io.*;
import java.lang.*;
import java.util.ArrayList;
import java.util.Collections;


public class Main {
    static int n;
    static ArrayList<Info> students = new ArrayList<>();
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());

        for(int i=0;i<n;i++){
            String[] s = br.readLine().split(" ");
            String name = s[0];
            int kor = Integer.parseInt(s[1]);
            int eng = Integer.parseInt(s[2]);
            int math = Integer.parseInt(s[3]);
            students.add(new Info(name, kor, eng, math));
        }

        Collections.sort(students);
        for(int i=0;i<n;i++){
            System.out.println(students.get(i).name);
        }
    }

    public static class Info implements Comparable<Info>{
        String name;
        int kor;
        int eng;
        int math;

        public Info(String name, int kor, int eng, int math){
            this.name = name;
            this.kor = kor;
            this.eng = eng;
            this.math = math;
        }

        @Override
        public int compareTo(Info o) {
            if(this.kor<o.kor){
                return 1;
            }else if(this.kor == o.kor){
                if(this.eng>o.eng){
                    return 1;
                }else if(this.eng == o.eng){
                    if(this.math<o.math){
                        return 1;
                    }else if(this.math==o.math){
                        return this.name.compareTo(o.name);
                    }
                }
            }
            return -1;
        }
    }
}



[통과여부]

image



[느낀점]

이 문제가 어려워서 한 것은 아니고 자바의 sorting하는 방법을 익히기 위해서 했는데 이제는 방법을 잊지 않고 잘할 수 있을 것 같다. 안 잊어버리도록 해야겠다.