✏️ 본인이 평가한 점수를 제외하는 경우 (아래 조건을 모두 만족하는 경우)
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
char get_grade(float score);
string solution(vector<vector<int>> scores) {
int N = scores.size();
int score_table[101];
float avg_scores[10] = {0,};
string answer = "";
for(int i=0; i<N; i++){
memset(score_table, 0, 101*sizeof(int));
int num = scores[0][i];
int _min = num;
int _max = num;
float total = 0;
score_table[num]++;
total += num;
for(int j=1; j<N; j++){
int num = scores[j][i];
score_table[num]++;
total += num;
_min = min(_min, num);
_max = max(_max, num);
}
int self_score = scores[i][i];
int cnt = N;
if(_min == self_score || _max == self_score){
if(score_table[self_score] == 1){
total -= self_score;
cnt--;
}
}
answer += get_grade(total/cnt);
}
return answer;
}
char get_grade(float score){
char grade;
if(score >= 90) grade = 'A';
else if(score >= 80) grade = 'B';
else if(score >= 70) grade = 'C';
else if(score >= 50) grade = 'D';
else grade = 'F';
return grade;
}
✏️ 본인이 평가한 점수 보다 크거나 작은 경우를 각각 Counting
✏️ 본인이 평가한 점수를 제외하는 경우
: 크거나 작은 경우가 n(학생의 수)-1과 같은 경우
#include <string>
#include <vector>
using namespace std;
char get_grade(float score);
string solution(vector<vector<int>> scores) {
int N = scores.size();
string answer = "";
for(int i=0; i<N; i++){
int self_score = scores[i][i];
int cnt = N, min_cnt = 0, max_cnt = 0;
float total = 0;
for(int j=0; j<N; j++){
if(scores[j][i] > self_score) max_cnt++;
if(scores[j][i] < self_score) min_cnt++;
total += scores[j][i];
}
if((min_cnt == cnt - 1) || (max_cnt == cnt - 1)) {
total -= self_score;
cnt--;
}
answer += get_grade(total/cnt);
}
return answer;
}
char get_grade(float score){
char grade;
if(score >= 90) grade = 'A';
else if(score >= 80) grade = 'B';
else if(score >= 70) grade = 'C';
else if(score >= 50) grade = 'D';
else grade = 'F';
return grade;
}