프로그래밍/코드업 일기

코드업(Codeup) 3015 : 성적표 출력 (실패)

Jaebins 2023. 8. 10. 16:29
반응형
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    static class Student{
        String name;
        Integer score;
        Integer input_ranks; 
    }

    static ArrayList<Student> students = new ArrayList<Student>();

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();

        ArrayList<String> rs = new ArrayList<String>();

       for(int i = 0; i < n; i++) {
           Student student = new Student();
           student.name = sc.next();
           student.score = sc.nextInt();
           student.input_ranks = i;
           students.add(student);
       }

       Collections.sort(students, new Comparator<Student>() {
           public int compare(Student s1, Student s2) {
               return s1.score.compareTo(s2.score);
           }
       });


       for(int i = n - 1; i >= 0; i--) {
           ArrayList<Integer> sameScores_rank = new ArrayList<Integer>();

           sameScores_rank.add(students.get(i).input_ranks);

           while(i > 0 && students.get(i).score == students.get(i - 1).score) {
               i--;
               sameScores_rank.add(students.get(i).input_ranks);
           }

           Object[] ranks = sameScores_rank.toArray();
           Arrays.sort(ranks);

           for(int k = 0; k < ranks.length; k++) {
               int rank = (int)(ranks[k]);
               rs.add(students.get(FindRank(rank)).name);
           }
       }

       for(int i = 0; i < m; i++) {
           System.out.println(rs.get(i));
       }
    }  

    static int FindRank(int rank) {
        for(int i = 0; i < students.size(); i++) {
            if(students.get(i).input_ranks == rank) return i;
        }
        return -1;
    }
}

뭐가 문제인지 잘 모르겠다..

반응형