본문 바로가기
코딩테스트/프로그래머스 1단계

프로그래머스 1단계 - 위클리 챌린지 2주차

by SICDev 2021. 8. 12.
반응형

https://programmers.co.kr/learn/courses/30/lessons/83201

 

코딩테스트 연습 - 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

 

 

import java.util.*;

class Solution {
    public String solution(int[][] scores) {
        StringBuilder sb = new StringBuilder();
        
        for(int i=0; i<scores.length; i++){
            //합계
            double sum = 0;
            //평균
            double avg = 0;
            //자신의 점수
            int selfScore = scores[i][i];
            //유일성 체크
            boolean unique = true;
            //나눠야할 갯수
            int cnt = scores.length;
            
            //최대값을 추출하기위해 max값을 -1로 설정 ( 점수는 0~100이기때문에 )
            int max = -1;
            //최소값을 추출하기위해 min값을 101로 설정 ( 점수는 0~100이기때문에 )
            int min = 101;
            
            for(int j=0; j<scores.length; j++){

                //자신이 받은 모든 점수를 더한다
                sum += scores[j][i];
                
                //자신의 점수는 제외하고, 자신의 점수가 유일한지 체크한다. (유일하면 true 동점이잇으면 false)
                if( i != j && scores[j][i] == selfScore){
                    unique = false;
                }
                
                //최대값 추출
                max = Math.max(max, scores[j][i]);

                //최소값 추출
                min = Math.min(min, scores[j][i]);

            }
            
            //자신의 점수가 유일값이고, 최대값이거나 최소값이면
            if( unique == true && (max == selfScore || min == selfScore)){
                //합계에서 뺀다.
                sum -= selfScore;
                cnt--;
            }
            
            avg = sum / cnt;
            sb.append(grade(avg));
        }
        
        return sb.toString();
    }
    
    public String grade(double score){
        if(score >= 90.0)
            return "A";
        else if(score >= 80.0)
            return "B";
        else if(score >= 70.0)
            return "C";
        else if(score >= 50.0)
            return "D";
        else
            return "F";
    }
    
    
}
반응형