SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1983. 조교의 성적 매기기
1. grade 벡터에 등수와 등급을 미리 초기화시켜두고,
입력 받은 순서에 따라 계산한 점수를 아래처럼 넣어줬다.
sum.push_back(make_pair(i, mid*0.35 + fin*0.45 + assign*0.2));
2. 점수가 높은 순서대로 sort함수를 이용해 정렬하고, 구하려는 k에 대하여 sum[i].first (=들어온 순서) 가 같은 것을 찾음
3. grade[ index ].second 에 해당하는 등급을 출력
숫자와 문자를 매칭 시킬 때는 pair를 이용하면 편한 것 같다!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 101
bool comp(pair<int, double> a, pair<int, double> b){
return a.second > b.second;
}
int main(int argc, char** argv)
{
int T;
cin >> T;
vector<pair<int, string>> grade = {{1, "A+"}, {2, "A0"}, {3, "A-"}, {4, "B+"}, {5, "B0"}, {6, "B-"}, {7, "C+"}, {8, "C0"}, {9, "C-"}, {10, "D0"}};
for(int t=0;t<T;t++){
int n, k;
vector<pair<int, double>> sum;
cin >> n >> k;
double mid, fin, assign;
for(int i=0;i<n;i++){
cin >> mid >> fin >> assign;
sum.push_back(make_pair(i, mid*0.35 + fin*0.45 + assign*0.2));
}
//제일 높은 순서대로 정렬, 후 grade와 인덱스 매칭해서 출력
for(int i=0;i<n;i++) sort(sum.begin(), sum.end(), comp);
int index;
for(int i=0;i<n;i++){
if( sum[i].first == k-1 ) { index = i; break; }
}
if(n > 10) index = index/ (n/10);
cout << "#" << t+1 << " " << grade[index].second << "\n";
}
return 0;
}
'코딩테스트 연습 > SWEA' 카테고리의 다른 글
[SWEA] 1948. 날짜 계산기 D2 (C++) (0) | 2022.05.25 |
---|---|
[SWEA] 1959. 두 개의 숫자열 D2 (c++) (0) | 2022.05.25 |
[SWEA] 1961. 숫자 배열 회전 d2 (c++) (0) | 2022.05.24 |
[SWEA] 1974. 스도쿠 검증 d2 (c++) (0) | 2022.05.23 |
[SWEA] 1954. 달팽이 숫자 d2 (c++) (0) | 2022.05.23 |