#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solve(float x);
string solution(vector<vector<int>> scores) {
string answer = "";
int counts = scores.size();
for(int j = 0; j < counts; j++)
{
int maxScore = -1;
int minScore = 101;
bool equal = false;
float sum = 0;
for(int i = 0; i < counts; i++)
{
sum += scores[i][j];
if(scores[j][j] == scores[i][j] && i != j) //i != j로 자기자신은 제외
equal = true;
maxScore = max(maxScore, scores[i][j]);
minScore = min(minScore, scores[i][j]);
}
if(equal == true)
{
sum /= counts;
}
else
{
if(maxScore == scores[j][j] || minScore == scores[j][j])
{
sum = (sum - scores[j][j]) / (counts - 1);
}
else
{
sum /= counts;
}
}
answer += solve(sum);
}
return answer;
}
string solve(float x)
{
if(90 <= x)
return "A";
else if(80 <= x)
return "B";
else if(70 <= x)
return "C";
else if(50 <= x)
return "D";
else
return "F";
}
해결 방법
- vector의 순서가 [ j ][ 0 ], [ j ][ 1 ], [ j ][ 2 ].... 가 아닌 [ 0 ][ i ], [ 1 ][ i ], [ 2 ][ i ]....이다.
- for문을 순회하면서 값을 다 더해준다.
- 자기 자신을 제외한 같은 수가 있는지를 확인한다. ( 있으면 무조건 최대,최소의 상관없이 / 학생의 수 )
- 최대, 최소가 자기 자신이면 그 수를 빼고 학생의 수 - 1만큼 나눠준다.
- 점수에 따른 성적을 넣는다.
문제주소 : https://programmers.co.kr/learn/courses/30/lessons/83201#
'Algorithm > Programmers' 카테고리의 다른 글
[C++] 프로그래머스 위클리챌린지 3주차 퍼즐조각채우기 (0) | 2021.09.23 |
---|---|
[C++] 프로그래머스 실패율 (0) | 2021.09.23 |
[C++] 프로그래머스 부족한 금액 계산하기 (0) | 2021.08.03 |
[C++] 프로그래머스 등굣길 DP (0) | 2021.05.10 |
[C++] 프로그래머스 보석 쇼핑 2020카카오인턴십 [미완] (0) | 2021.05.10 |