알고리즘/프로그래머스

프로그래머스 위클리 챌린지 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;
    }
}