-
728x90
- 각 학생 별로 최고점(max), 최저점(min)을 저장한다.
- 이때, 최고점과 최저점이 2번 나온 경우 빼주지 않아도 되기 때문에, max_same과 min_same에 표시해준다.
- "최고점이 유일하고 이 점수가 자신이 준 점수일 때" or "최저점이 유일하고 이 점수가 자신이 준 점수일때"
이 두 경우 자신의 점수를 빼고 평균을 구한다.class Solution { public String solution(int[][] scores) { StringBuilder sb = new StringBuilder(); for (int c = 0; c < scores.length; c++) { int max = 0, min = 999999, sum = 0; // 최대값, 최소값, 총합 boolean max_same = false, min_same = false; // 같은 숫자 중복 유무 for (int r = 0; r < scores.length; r++) { sum += scores[r][c]; if (max == scores[r][c]) max_same = true; else if (max < scores[r][c]) { max = scores[r][c]; max_same = false; } if (min == scores[r][c]) min_same = true; else if (min > scores[r][c]) { min = scores[r][c]; min_same = false; } } double avg = 0.0; if ((scores[c][c] == max && !max_same) || (scores[c][c] == min && !min_same)) { sum -= scores[c][c]; avg = (double) sum / (double) (scores.length - 1); } else avg = (double) sum / (double) scores.length; sb.append(getScore(avg)); } return sb.toString(); } private static char getScore(double avg) { if (avg >= 90) return 'A'; else if (avg >= 80) return 'B'; else if (avg >= 70) return 'C'; else if (avg >= 50) return 'D'; return 'F'; } }
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[level1] 프로그래머스 - 약수의 개수와 덧셈(JAVA) (0) 2021.08.27 [level1] 프로그래머스 - 실패율(JAVA) (0) 2021.08.27 [level1] 프로그래머스 - 폰켓몬(JAVA) (0) 2021.08.27 [level1] 프로그래머스 - 이름이 없는 동물의 아이디(MySQL) (0) 2021.08.27 [level1] 프로그래머스 - 최댓값 구하기(MySQL) (0) 2021.08.27 댓글