Coding Test/JAVA 코딩테스트 풀이정리(프로그래머스)

프로그래머스 스쿨 Lv.0 - 등수 매기기
깝몬 2023. 11. 19. 09:03
class Solution {
    public int[] solution(int[][] score) {
        //점수의 합으로 비교하기 위한 배열 선언
        int[] avg = new int[score.length];
        
        //배열을 채우면서
        //최고점수를 찾아 max에 기록한다. 이때 max가 0일수도 있다.
        int max = 0;
        for(int i=0;i<score.length;i++){
            avg[i]+=score[i][0];
            avg[i]+=score[i][1];
            if(max<avg[i]){max=avg[i];}
        }
        
        //rank를 통해 등수 선언, 같은 등수가 나올때마다 rankCount를 센뒤 그것을 rank에 더함
        int rank=1;
        int rankCount=0;
        int[] answer = new int[avg.length];
        while(max>=0){
            //사용한 점수값은 해당하는 answer에 rank를 기록 후 -1로 처리
            for(int i=0;i<avg.length;i++){
                if(avg[i]==max){answer[i]=rank;rankCount++;avg[i]=-1;}
            }
            
            //더해준 후 초기화
            rank+=rankCount;
            rankCount=0;
            max=-1;
            for(int i=0;i<avg.length;i++){
                if(max<avg[i]){max=avg[i];}
            }    
        }
        return answer;
    }
}

 

모든 점수가 0점인 경우까지 고려하지 않으면 테스트사례중에 6번을 틀리게된다. 그 반례를 생각하여 풀자.