[프로그래머스/C++] 상호평가
1.문제 링크
2. 풀이 전 계획과 생각
- 구현하기
3. 풀이
#include <string>
#include <vector>
using namespace std;
string solution(vector<vector<int>> scores) {
string answer = "";
for(int i=0;i<scores.size();i++){
int min=101, max=-1;
int sum=0;
for(int j=0;j<scores.size();j++){
sum+=scores[j][i];
if(scores[j][i]>max) max=scores[j][i];
if(scores[j][i]<min) min=scores[j][i];
}
double avg;
if(scores[i][i]==max){
bool check=false;
for(int j=0;j<scores.size();j++){
if(i!=j && max==scores[j][i]){
check=true;
break;
}
}
if(check==false){
sum-=max;
avg = sum/(scores.size()-1);
}
else{
avg = sum/scores.size();
}
}
else if(scores[i][i]==min){
bool check=false;
for(int j=0;j<scores.size();j++){
if(i!=j && min==scores[j][i]){
check=true;
break;
}
}
if(check==false){
sum-=min;
avg = sum/(scores.size()-1);
}
else{
avg = sum/scores.size();
}
}
else{
avg = sum/scores.size();
}
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;
}
sum을 구하면서 최소, 최대값을 구한다.
자신이 평가한 값이 혹시 최소, 최대값과 일치하는지 확인한다. 일치하면 이것이 유일한 값인지 체크한다.
각 점수 조건에 맞게 학점을 부여한다.
4. 풀이하면서 고민했던 점
- 유일한 최고점, 유일한 최고점을 어떻게 유일한지를 확인할까 고민함. for문을 돌면서 중복되는 숫자가 있는지 확인함.