[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;
}
}
코드 설명
주석 설명.
요약
- 더 쉽게 할수있을거같은데 ..