🌞Algorithm/🔥programmers

[programmers] 등수 매기기

뿌야._. 2026. 9. 15. 11:12
문제
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