코딩테스트/프로그래머스 1단계
프로그래머스 1단계 - 위클리 챌린지 2주차
SICDev
2021. 8. 12. 20:55
반응형
https://programmers.co.kr/learn/courses/30/lessons/83201
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";
}
}
반응형