SWEA

SWEA 1983. 조교의 성적 매기기 D2 C++

2024. 5. 10. 13:15

 

 

 

 

처음에는 배열을 다 정렬해야하나 했으나,

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을 리턴해야합니다.
}