개인 공부/알고리즘

[ 프로그래머스 ] 등수 매기기

킴도비 2024. 5. 28. 13:41

늘 제대로 생각하고 풀려고 하는데 머리가 잘 안돌아가는 느낌이다..! 

 

이것도 뭔가 쉬워보였는데 막상 중복이 있는 등수 때문에 어렵게 생각했었는데 풀다가 그냥 다른 분의 소스코드를 참고했다..!

 

📔 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

  • 문제 내용
공동 n등을 포함하여 등수 매기기

 

  • 제한 조건
- 0 ≤ score[0], score[1] ≤ 100
- 1 ≤ score의 길이 ≤ 10
- score의 원소 길이는 2입니다.
- score는 중복된 원소를 갖지 않습니다.

 

📖 문제 풀이

 

일단 구조는 2개로 간단한데

 

1. 등수 평균 내서 새 배열에 넣기

2. 등수 매기기

 

1번은 엄청 쉬우니 생략하고, 2번부터 문제다.

 

등수를 어떻게 매기는 것인가가 중요하다. 한번 씩 다 도는 것이 중요하다고 생각했다.

 

처음에는 점수를 매기고 그에 따른 HashMap으로 할까 했는데 완전 잘못 생각한 방법이었다.

 

그래서 비교해서 등수를 매기는 방식을 선택! 조건을 잘 세워야 했다.

 

 

소스 코드 완성!

 

 소스 코드

import java.util.*;

class Solution {
    public int[] solution(int[][] score) {
        double[] arr = new double[score.length];
        
        for(int i = 0; i < score.length; i++){
            arr[i] = (score[i][0] + score[i][1]) / 2.0;
        }
        
        int[] answer = new int[score.length];
        
        for(int j = 0; j < score.length; j++) {
            int order = 1;
            for(int k = 0; k < score.length; k++) {
                if(arr[j] < arr[k]) order++;
                answer[j] = order;
            }
        }
        return answer;
    }
}