SWEA

[SWEA] 조교의 성적 매기기

itsnot4me 2024. 9. 26. 22:01

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PwGK6AcIDFAUq&categoryId=AV5PwGK6AcIDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com

import java.util.Scanner;
import java.io.FileInputStream;

class Solution
{
	public static void main(String args[]) throws Exception
	{

		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();
		for(int test_case = 1; test_case <= T; test_case++)
		{
			int N = sc.nextInt();
            int K = sc.nextInt();
            int []array = new int[N];
            double []rank = new double[N];
            for(int i=0; i<N; i++){
            	int a = sc.nextInt();
                int b = sc.nextInt();
                int c = sc.nextInt();
                array[i]=a*35+b*45+c*20;
            }
		  	for(int j=0; j<array.length; j++){
                rank[j]=1;
                for(int k=0; k<array.length; k++){
                    if(array[j]<array[k])
                        rank[j] = rank[j]+1;
                }
            }
            if(rank[K-1]/N<=0.1)
                System.out.println("#"+test_case+" A+"); 
             else if(rank[K-1]/N<=0.2)
                System.out.println("#"+test_case+" A0");
                         else if(rank[K-1]/N<=0.3)
                System.out.println("#"+test_case+" A-");
                         else if(rank[K-1]/N<=0.4)
                System.out.println("#"+test_case+" B+");
                         else if(rank[K-1]/N<=0.5)
                System.out.println("#"+test_case+" B0");
                         else if(rank[K-1]/N<=0.6)
                System.out.println("#"+test_case+" B-");
                         else if(rank[K-1]/N<=0.7)
                System.out.println("#"+test_case+" C+");
                         else if(rank[K-1]/N<=0.8)
                System.out.println("#"+test_case+" C0");
                         else if(rank[K-1]/N<=0.9)
                System.out.println("#"+test_case+" C-");
                         else if(rank[K-1]/N<=1.0)
                System.out.println("#"+test_case+" D0");
            
		}
	}
}

 

성적을 비율에 맞게 곱해서 더하고, 배열(array)에 저장

순위 매기기를 위한 배열 rank를 따로 생성 후 순위 매기기 알고리즘 사용

순위/N의 분위에 따라 성적 매겨서 출력