[Programmers]-상호 평가

문제

위클리 챌린지 2주차 문제이다.

코드

import java.util.*;

class Solution {
    public String grade(double score){
        if(score >= 90) return "A";
        else if(80 <= score && score< 90) return "B";
        else if(70 <= score && score< 80) return "C";
        else if(50 <= score && score< 70) return "D";
        else return "F";
    }

    public String solution(int[][] scores) {
        String answer = "";
        int n = scores.length;
        double avg = 0;

        for(int i=0;i<n;i++){
            int max = -1;
            int min = 101;
            int maxIndex = -1;
            int minIndex = 101;
            int maxDup = 0;//최대최소 개수
            int minDup = 0;
            int len = n;
            for(int j=0;j<n;j++){//최대최소 구하기
                if(max < scores[j][i]){
                    max = scores[j][i];
                    maxIndex = j;
                }
                if(min > scores[j][i]){
                    min = scores[j][i];
                    minIndex = j;
                }
            }
            for(int j=0;j<n;j++){//최대최소값 각 개수
                if(scores[j][i] == max) maxDup++;
                if(scores[j][i] == min) minDup++;
            }
            if(maxIndex == i && maxDup == 1){
                scores[i][i] = 0;
                len--;
            }
            if(minIndex == i && minDup == 1){
                scores[i][i] = 0;
                len--;
            }

            //평균구하기
            int sum = 0;
            for(int j=0;j<n;j++){
                sum += scores[j][i];
            }
            avg = (double)sum/(double)len;

            answer = answer+""+grade(avg);
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                System.out.printf(scores[i][j]+" ");
            }
            System.out.println();
        }
        return answer;
    }
}

코드 설명

주석 설명.

요약

  • 더 쉽게 할수있을거같은데 ..