본문 바로가기

Study/Baekjoon & SW Expert Academy

[ SW Expert Academy : 1983번 조교의 성적 매기기 ]

SW Expert Academy의 1983번 문제인 조교의 성적 매기기를 풀어봅시다!

문제는 무단 복제를 금하므로 직접 홈페이지에 들어가셔서 보시기 바랍니다.

 

SW Expert Academy 홈페이지:

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

다음은 코드를 보시죠~

 

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main() {

	int t;	//test case
	int n;	//student
	int k;	//k번째
	int cnt = 1;

	cin >> t;
	while (t--) {

		double arr[100][3] = {};
		double temp = 0;
		string result;
		vector<double>store;
		int degree;

		cin >> n >> k;
		if (n < k) return -1;

		for (int i = 0; i < n; i++) {
			
			double sum = 0;
			cin >> arr[i][0] >> arr[i][1] >> arr[i][2];

			sum += arr[i][0] * 0.35 + arr[i][1] * 0.45 + arr[i][2] * 0.20;

			if (i == k-1) {
				temp = sum;
			}

			store.push_back(sum);

		}

		sort(store.begin(), store.end());
		
		for (int i = 0; i < 10; i++){

			for (int j = 0; j < store.size() / 10; j++) {

				if (store[(i * store.size() / 10) + j] == temp) {
					degree = i + 1;
					break;
				}
			}

		}

		if (degree == 10) {
			result = "A+";
		}else if (degree == 9) {
			result = "A0";
		}else if (degree == 8) {
			result = "A-";
		}else if (degree == 7) {
			result = "B+";
		}else if (degree == 6) {
			result = "B0";
		}else if (degree == 5) {
			result = "B-";
		}else if (degree == 4) {
			result = "C+";
		}else if (degree == 3) {
			result = "C0";
		}else if (degree == 2) {
			result = "C-";
		}else if (degree == 1) {
			result = "D0";
		}

		cout << "#" << cnt++ << " " << result << "\n";
	}

	return 0;
}

 

너무 무식하게 짰나요? ㅎㅎ 더 좋은 방법있으시면 

공유해주세요~