BackJoon Algorithm 10825 국영수 (Java)

업데이트:
1 분 소요

BackJoon Algorithm - Java

alt

문제

alt

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Back_10825 {
    public static void main(String[] args) throws IOException {

        // given
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int student_count = Integer.parseInt(br.readLine());  // 테스트 카운트 입력
        Student student[] = new Student[student_count];  // 학생 객체 생성
        StringTokenizer token;
        // when
        for (int i = 0; i < student_count; i++) {
            token = new StringTokenizer(br.readLine() + " ");
            String name = token.nextToken();
            int kor = Integer.parseInt(token.nextToken());
            int eng = Integer.parseInt(token.nextToken());
            int math = Integer.parseInt(token.nextToken());

            student[i] = new Student(name, kor, eng, math); // student 객체 배열에 담기
        }
        Arrays.sort(student, (s1, s2) -> {
            // 국어 점수가 같으면
            if (s1.kor == s2.kor) {
                // 영어점수도 같으면
                if (s1.eng == s2.eng) {
                    // 모든 점수가 같으면
                    if (s1.math == s2.math) {
                        return s1.name.compareTo(s2.name);  // 이름 비교 내림
                    }
                    // 수학점수가 증가하는 순으로 오름
                    return s2.math - s1.math;
                }
                // 영어 점수가 증가하는 순으로 내림
                return s1.eng - s2.eng;
            }
            // 국어점수가 감소한는 순으로 오름
            return s2.kor - s1.kor;
        });
        StringBuilder sb = new StringBuilder();
        // then
        for (int i = 0; i < student_count; i++) {
            sb.append(student[i].name).append("\n");
        }
        System.out.println(sb);
        br.close();
    }

    static class Student {

        String name;
        int kor;
        int eng;
        int math;

        public Student(String name, int kor, int eng, int math) {

            this.name = name;
            this.kor = kor;
            this.eng = eng;
            this.math = math;
        }


    }
}


댓글남기기