알고리즘 문제풀이/프로그래머스
[프로그래머스/위클리 챌린지] 2주차 (C++)
노력의천재
2021. 8. 12. 17:10
https://programmers.co.kr/learn/courses/30/lessons/83201
코딩테스트 연습 - 2주차
[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"
programmers.co.kr
현재 행을 기준으로 평균을 구하는 것이 아니라, 열을 기준으로 평균을 구하는 것을 주의(세로로 평균을 구해야 함)
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string answer = "";
void getGrade(int avg) {
if(avg >= 90) answer += "A";
else if(avg >= 80 && avg < 90) answer += "B";
else if(avg >= 70 && avg < 80) answer += "C";
else if(avg >= 50 && avg < 70) answer += "D";
else answer += "F";
}
string solution(vector<vector<int>> scores) {
int size = scores.size();
for(int i = 0; i < size; i++) { // col
int sum = 0, maxx = -2147000000, minn = 2147000000, now = scores[i][i];
for(int j = 0; j < size; j++) { // row
if(i == j) continue;
maxx = max(maxx, scores[j][i]);
minn = min(minn, scores[j][i]);
sum += scores[j][i];
}
if(now < minn || now > maxx) {
getGrade(sum / (size - 1));
continue;
}
sum += now;
getGrade(sum / size);
}
return answer;
}