class Solution {
public String solution(int[][] scores) {
String answer = "";
for(int i=0;i<scores.length;i++) {
double avg = 0.0;
int sum = 0;
int self = scores[i][i];
int min = 101;
int max = -1;
String grade = "";
for(int j=0;j<scores.length;j++) {
if(i!=j) {
sum += scores[j][i];
min = (scores[j][i] <= min ? scores[j][i] : min);
max = (scores[j][i] >= max ? scores[j][i] : max);
}
}
if(self <= max && self >= min) {
sum += self;
avg = sum / scores.length;
} else {
avg = sum / (scores.length-1);
}
grade += (avg >= 90 ? "A" : (avg >= 80 ? "B" : (avg >= 70 ? "C" : (avg >= 50 ? "D" : "F" ))));
answer += grade;
}
return answer;
}
}
📝 해결
처음에 첫 번째 for문의 조건식을 해당하는 배열의 개수 값으로 돌려야겠다는 생각에 i < scores[i].length 로 잡아줬는데 ArrayIndexOutOfBoundsException 오류가 발생했다.
오류가 발생한 후에 되짚어보니 x배열과 y배열의 인덱스 개수는 똑같다는 점을 이용해야한다는 것을 깨달았다.
int배열은 최소값,최대값을 구해주는 메서드가 따로 없으니 직접 비교해가면서 만들어줬다.
확실히 삼항연산자를 사용했을 때 코드가 깔끔해지는 것 같다.
📍 문제
https://programmers.co.kr/learn/courses/30/lessons/83201