반응형
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;
}
}
뭐가 문제인지 잘 모르겠다..
반응형
'프로그래밍 > 코드업 일기' 카테고리의 다른 글
코드업(CodeUp) 4726 : 수열 (0) | 2023.08.11 |
---|---|
코드업(CodeUp) 4721 : 투표 (0) | 2023.08.11 |
코드업(Codeup) 4691 : 주사위 네 개 (0) | 2023.08.10 |
코드업(Codeup) 4566 : 소수 (0) | 2023.08.10 |
코드업(Codeup) 4051 : 시간외 근무 수당 (0) | 2023.08.10 |