처음에는 배열을 다 정렬해야하나 했으나,
K번째 배열이 몇 번째로 큰 숫자가 되어 어디 정렬되는지만 알면 되므로
그냥 for문을 한 번만 써서 크기를 비교하기만 해도 됐다.
또한 K번째 배열의 실제 학점을 알아내기 위해 (count/(n/10)) 형태를 사용하는 것이 중요했다.
#include<iostream>
#include<algorithm>
using namespace std;
int main(int argc, char** argv) {
int t;
cin >> t;
for(int i=0; i<t; i++){
//입력 받기
int n, k;
cin >> n >> k;
// 점수 입력받아 배열 arr에 계산
double arr[100];
for(int j=0; j<n; j++) {
int s1, s2, s3;
cin >> s1 >> s2 >> s3;
arr[j] = s1*0.35 + s2*0.45 + s3*0.2;
}
//k번째 학생이 몇번째로 큰 점수인지 확인
int count = 0;
for(int j=0; j<n; j++){
if(arr[j] > arr[k-1])
count++;
}
//k번째 학생의 점수 출력
if( (count/(n/10)) == 0)
cout << "#" << i+1 << " " << "A+" << "\n";
else if( (count/(n/10)) == 1)
cout << "#" << i+1 << " " << "A0" << "\n";
else if( (count/(n/10)) == 2)
cout << "#" << i+1 << " " << "A-" << "\n";
else if( (count/(n/10)) == 3)
cout << "#" << i+1 << " " << "B+" << "\n";
else if( (count/(n/10)) == 4)
cout << "#" << i+1 << " " << "B0" << "\n";
else if( (count/(n/10)) == 5)
cout << "#" << i+1 << " " << "B-" << "\n";
else if( (count/(n/10)) == 6)
cout << "#" << i+1 << " " << "C+" << "\n";
else if( (count/(n/10)) == 7)
cout << "#" << i+1 << " " << "C0" << "\n";
else if( (count/(n/10)) == 8)
cout << "#" << i+1 << " " << "C-" << "\n";
else
cout << "#" << i+1 << " " << "D0" << "\n";
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
'SWEA' 카테고리의 다른 글
SWEA 17319. 문자열문자열 D3 C++ (0) | 2024.05.10 |
---|---|
SWEA 1986. 지그재그 숫자 D2 C++ (0) | 2024.05.10 |
SWEA 1979. 어디에 단어가 들어갈 수 있을까 D2 C++ (0) | 2024.05.10 |
SWEA 1984. 중간 평균값 구하기 D2 C++ (0) | 2024.05.08 |
SWEA 2063. 중간값 찾기 D1 C++ (0) | 2024.05.08 |