본문 바로가기
Problem Solving/SWEA

[SWEA] 1983. 조교의 성적 매기기

by 테리는당근을좋아해 2020. 1. 29.

문제

총점 = 중간점수(35%) + 기말점수(45%) + 과제(20%)

 

총점을 기준으로 A+ ~ D0까지 10개의 성적을 매길 때 k번째 학생의 성적을 구하는 문제

 

풀이방법

총점과 인덱스를 멤버로 가지는 클래스를 만들어 총점 순으로 정렬한 뒤 성적을 부여

 

소스코드

package samsung;

import java.util.*;

public class s_1983 {
	static class Student implements Comparable<Student>{
		double grade;
		int num;
		
		Student(double grade, int num){
			this.grade = grade;
			this.num = num;
		}
		
		@Override
		public int compareTo(Student s) {
			if(this.grade > s.grade)
				return -1;
			else
				return 1;
		}
	}
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String[] alpa = {"A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"};
		int test = sc.nextInt();
		
		for(int t = 1; t <= test; t++) {
			ArrayList<Student> a = new ArrayList();
			int n = sc.nextInt();
			int target = sc.nextInt();
			
			for(int i = 1; i <= n; i++) {
				double tmp1 = sc.nextDouble() * 35 / 100;
				double tmp2 = sc.nextDouble() * 45 / 100;
				double tmp3 = sc.nextDouble() * 20 / 100;
				
				a.add(new Student(tmp1 + tmp2 + tmp3, i));
			}
			Collections.sort(a);
			for(int i = 0; i < a.size(); i++) {
				Student tmp = (Student)a.get(i);
				if(tmp.num == target) {
					double idx = (double)i / a.size();
					System.out.println("#" + t + " " + alpa[(int)(idx*10)]);
				}
			}
		}
	}
}

댓글