어흥
[프로그래머스] 상호 평가 (C++) 본문
728x90
반응형
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/83201
1. 주의할 점
- 행/열 구분을 잘 한다
2. 구현
- 각 행마다 최대 점수, 최소 점수, 총합을 구한다
- 본인의 점수가 최대 혹은 최소 점수인 경우, 총합과 총 인원을 수정하여 score2grade() 함수를 통해 학점을 계산한다
- 학점들을 모두 붙여서 반환한다
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string score2grade(float score){
if(score>=90) return "A";
else if(score>=80) return "B";
else if(score>=70) return "C";
else if(score>=50) return "D";
else return "F";
}
string solution(vector<vector<int>> scores) {
string answer = "";
int maxi, mini, maxiCnt, miniCnt, num = scores[0].size();
float sum;
for(int i=0;i<scores.size();i++){
//초기화
maxi=-1;
maxiCnt=1;
mini=101;
miniCnt=1;
sum=0;
for(int j=0;j<num;j++){
int score = scores[j][i];
if(score>maxi){
maxi = score;
maxiCnt=1;
}
else if(score==maxi) maxiCnt++;
if(score<mini){
mini = score;
miniCnt=1;
}
else if(score==mini) miniCnt++;
sum+=score;
}
if(scores[i][i]==maxi && maxiCnt==1){
sum-=maxi;
answer+=score2grade(sum/(num-1));
}
else if(scores[i][i]==mini && miniCnt==1){
sum-=mini;
answer+=score2grade(sum/(num-1));
}
else answer+=score2grade(sum/num);
}
return answer;
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 미로 탈출 (C++) (1) | 2021.08.31 |
---|---|
[프로그래머스] 퍼즐 조각 채우기 (C++) (0) | 2021.08.30 |
[프로그래머스] 부족한 금액 계산하기 (C++) (0) | 2021.08.30 |
[프로그래머스] 표 편집 (C++) (0) | 2021.07.16 |
[프로그래머스] 거리두기 확인하기 (C++) (0) | 2021.07.16 |
Comments