알고리즘/프로그래머스
프로그래머스 위클리 챌린지 2주차 (자바)
reumiii
2021. 8. 30. 15:19
🍀 문제
당신은 각 학생들이 받은 점수의 평균을 구하여, 기준에 따라 학점을 부여하려고 합니다.
만약, 학생들이 자기 자신을 평가한 점수가 유일한 최고점 또는 유일한 최저점이라면 그 점수는 제외하고 평균을 구합니다.
평균학점
90점 이상 | A |
80점 이상 90점 미만 | B |
70점 이상 80점 미만 | C |
50점 이상 70점 미만 | D |
50점 미만 | F |
학생들의 점수가 담긴 정수형 2차원 배열 scores가 매개변수로 주어집니다. 이때, 학생들의 학점을 구하여 하나의 문자열로 만들어서 return 하도록 solution 함수를 완성해주세요.
코딩테스트 연습 - 2주차 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 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
😊 나의 코드
class Solution {
public String solution(int[][] scores) {
String answer = "";
for (int i = 0; i < scores.length; i++) {
boolean isMin = true;
boolean isMax = true;
int sum = 0;
double avg = 0;
for (int j = 0; j < scores.length; j++) {
if (i != j) {
if (isMin && scores[i][i] >= scores[j][i])
isMin = false;
if (isMax && scores[i][i] <= scores[j][i])
isMax = false;
sum += scores[j][i];
}
}
if (!isMin && !isMax) {
sum += scores[i][i];
avg = (double) sum / scores.length;
} else {
avg = (double) sum / (scores.length - 1);
}
if (avg >= 90)
answer += "A";
else if (avg >= 80)
answer += "B";
else if (avg >= 70)
answer += "C";
else if (avg >= 50)
answer += "D";
else
answer += "F";
}
return answer;
}
}