[ 프로그래머스 ] 상호평가 JAVA

2021. 9. 9. 17:33알고리즘/프로그래머스

728x90
반응형

문제 설명


문제 풀이

class Solution {
    public String solution(int[][] scores) {
        String answer = "", grade = "FFFFFDDCBA";
        for(int i=0; i<scores.length; i++) {
            int max = scores[i][i], min = scores[i][i], sum = 0, avg = 0, cnt = scores.length;
            boolean isMax = true, isMin = true;
            for(int j=0; j<scores.length; j++) {
                sum += scores[j][i];
                if(i!=j){
                    if(max <= scores[j][i]) isMax = false;
                    if(min >= scores[j][i]) isMin = false;
                }
            }
            if(isMax || isMin) {
                cnt--;
                sum -= scores[i][i];
            }
            avg = sum / cnt;
            answer += grade.charAt(avg/10);
        }
        return answer;
    }
}

그림상으로 볼 때 열끼리 값을 더해서 평균을 구해야 합니다.

자기 자신에게 최고점을 주거나 최저점을 줬을 경우 평균 계산에서 빼야 합니다.

 

자기 자신보다 큰 값이 있을 경우 최고점이 아니고, 작은 값이 있을 경우 최저점이 아니므로

isMax와 isMin 둘 다 false가 아닐 경우 평균 계산에서 제외합니다.

 

 

출처 : https://programmers.co.kr/learn/courses/30/lessons/83201?language=java 

 

코딩테스트 연습 - 2주차_상호평가

[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"

programmers.co.kr

 

728x90
반응형