문제
https://school.programmers.co.kr/learn/courses/30/lessons/120882
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
< 등수 매기기 >
문제 풀이 (Java)
import java.util.*;
class Solution {
public class Info {
double avg;
int idx;
public Info(double avg, int idx) {
this.avg = avg;
this.idx = idx;
}
}
public int[] solution(int[][] score) {
int[] answer = new int[score.length];
ArrayList<Info> list = new ArrayList<>();
for (int i = 0; i < score.length; i++) {
double avg = (double)(score[i][0] + score[i][1]) / 2;
list.add(new Info(avg, i));
}
Collections.sort(list, new Comparator<Info>() {
@Override
public int compare(Info o1, Info o2) {
return Double.compare(o2.avg, o1.avg);
}
});
int rank = 1;
for (int i = 0; i < list.size(); i++) {
if (i > 0 && list.get(i - 1).avg == list.get(i).avg) {
answer[list.get(i).idx] = answer[list.get(i - 1).idx];
} else {
answer[list.get(i).idx] = rank;
}
rank += 1;
}
return answer;
}
}
ArrayList에 평균과 현재 위치를 저장한 후 평균 기준 내림차순으로 정렬한다. ArrayList를 순회하며 평균을 비교해 등수를 answer에 저장한다. 최종 answer을 반환한다.

출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'🌞Algorithm > 🔥programmers' 카테고리의 다른 글
| [programmers] 문자열 계산하기 (0) | 2026.09.17 |
|---|---|
| [programmers] 로그인 성공? (0) | 2026.09.16 |
| [programmers] 다항식 더하기 (0) | 2026.09.14 |
| [programmers] 최빈값 구하기 (0) | 2026.09.11 |
| [programmers] OX퀴즈 (0) | 2026.09.10 |