https://programmers.co.kr/learn/courses/30/lessons/83201
풀이
(y, x)-> y가 x를 평가한 점수
한명에 대한 평가들을 누적합하면서 최소값, 최대값, 최소값 갯수, 최대값 갯수를 확인
자기자신을 평가한 점수가 유일한 최고점/최저점이라면 그 점수를 제외하고 평균을 계산
- (자기 자신 점수==min/max) && (max/min_cnt==1)
#include <string>
#include <vector>
using namespace std;
string check_score(int score){ // 평균점수에 대한 학점
if(score>=90)
return "A";
else if(score>=80&&score<90)
return "B";
else if(score>=70&&score<80)
return "C";
else if(score>=50&&score<70)
return "D";
else
return "F";
}
string solution(vector<vector<int>> scores) {
string answer = "";
int size=scores.size();
for(int i=0;i<size;i++){
int min_cnt=0;
int max_cnt=0;
int min=100;
int max=0;
int sum=0;
for(int j=0;j<size;j++){
int now=scores[j][i];
if(min>now){
min=now;
min_cnt=1;
}
else if(min==now){
min_cnt++;
}
if(max<now){
max=now;
max_cnt=1;
}
else if(max==now){
max_cnt++;
}
sum+=now;
}
//자기자신의 점수가 최저/최대이면서 최저/최대 점수의 갯수가 1개이면 누적점수에서 제외
if((scores[i][i]==min&&min_cnt==1)||(scores[i][i]==max&&max_cnt==1)){
sum-=scores[i][i];
sum/=(size-1);
}
else{
sum/=size;
}
answer+=check_score(sum);
}
return answer;
}
'알고리즘' 카테고리의 다른 글
BOJ 2467 - 용액(C++) (0) | 2021.09.15 |
---|---|
Programmers - 직업군 추천하기 (0) | 2021.09.15 |
Programmers - 부족한 금액 계산하기 (0) | 2021.09.14 |
Programmers - 문자열 압축(Python) (0) | 2021.09.06 |
Programmers - 자물쇠와 열쇠(C++) (0) | 2021.09.05 |
댓글