728x90
반응형
문제 설명
1. 학생들이 각각 모든 학생들의 채점을 한다.
2. 참고로 배열에서 세로로 채점한다. 가로로 생각했다가 시간 버림...
3. 자신이 채점한 점수가 유일한 최대/최소값이면 빼고 계산한다.
4. 90점 이상 : A, 80점 이상 : B, .... , 50미만 : F 이렇게 해서 구한 답을 return하면 된다.
풀이 과정
1. 간단하게 구하는 방법을 생각해 보았는데, 나는 찾지 못하겠다...
2. 일단 자기 점수를 계산해 두고, 이게 최대나 최소에 모두 해당하지 않는 경우인지 알아야한다.
3. 자기 자신의 값이 유일한지를 찾아낸 후 그 값을 빼고, 나누는 값도 빼준다.
4. 총 답을 구해주면 된다.... 그냥 반례 잘 생각하면 돼서 풀이는 사실 별게 없다.
코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
class Solution { | |
public String solution(int[][] scores) { | |
String answer = ""; | |
int num = scores.length; // 학생수가 N명이면 평가도 N개다. | |
for(int i=0; i<num; i++){ // N명의 학생 <- i는 학생들이다. | |
boolean only = true; // 유일한 최대/최소 | |
int self = scores[i][i]; // 자신 평가 self | |
int sum = 0; // 합계 점수 | |
boolean max = false; // 최대값인지 | |
boolean min = false; // 최소값인지 | |
for(int j=0; j<num; j++){ // 평가 수 N <- j가 평가 | |
if(scores[j][i] > self) min = true; // 지금 입력받은 점수가 자기평가보다 크면 min | |
if(scores[j][i] < self) max = true; // 반대의 경우 max | |
if(j!=i && scores[j][i]==self) only = false; // 자기자신점수가 아니고 입력된점수가 self랑 같으면 오직 하나가 아니니까 only가 false | |
sum += scores[j][i]; // 점수 더하기 | |
} | |
int students = num; // 학생 수 | |
if(only && (!min || !max)){ // 오직 하나의 최대/최소이며 최대나 최소중에 하나를 만족하면 | |
sum -= self; // 점수 빼주고 | |
students--; // 학생수 빼주고 | |
} | |
sum /= students; // 구한 학생수로 전체 점수 나누기 | |
answer += creditMaker(sum); // 정답에다가 학점 더하기 | |
} | |
return answer; | |
} | |
public static String creditMaker(int sum){ // 나뉘어진것은 int로 하면 점수가 10점단위로 간다. | |
sum /= 10; | |
switch(sum){ | |
case 10 : | |
case 9 : return "A"; | |
case 8 : return "B"; | |
case 7 : return "C"; | |
case 6 : return "D"; | |
case 5 : return "D"; | |
default : return "F"; | |
} | |
} | |
} |
반응형
'알고리즘 공부 > 위클리 챌린지' 카테고리의 다른 글
프로그래머스 위클리 챌린지 6주차 - java (2) | 2021.09.06 |
---|---|
프로그래머스 위클리 챌린지 5주차 - java (4) | 2021.08.30 |
프로그래머스 위클리 챌린지 4주차 - java (0) | 2021.08.23 |
프로그래머스 위클리 챌린지 3주차 - java (0) | 2021.08.22 |
프로그래머스 위클리 챌린지 1주차 - java (0) | 2021.08.10 |