본문 바로가기
알고리즘/SWEA

[SWEA / 조교의 성적 매기기 / JAVA]

by KDW999 2023. 3. 30.

https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

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

swexpertacademy.com

 

문제 접근

문제를 읽으면서 느낌 자체는 쉽다는 느낌을 받았음에도 불구하고 푸는데 생각보다 오래걸렸다.

처음에 학점을 배열로 안만들고 학생 수에 따라 맞춰서 넣어주려니 방법이 잘 떠오르지 않았다.

유연한 사고가 참 중요하다 느낀다.

 

학생들 수 만큼 반복문 돌리면서 시험 점수와 총점을 계산하고 찾아야할 학생의 총점도 따로 저장해준다.

이후 내림차순 정렬 후

정렬된 배열을 처음부터 찾아가면서 저장해둔 점수와 일치한다면 해당 차례의 인덱스로 만들어둔 학점 배열과 매치시킨다.

import java.util.*;

public class Solution {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		String[] credit = { "A+", "A0", "A-", "B+", "B0", "B-", "C+", "C0", "C-", "D0"};
		
		int T = sc.nextInt();
		
		for(int i=0; i<T; i++) { // Test Case
			
		int studentNum = sc.nextInt();
		int K = sc.nextInt();

		int[] middleExam = new int[studentNum];
		int[] finalExam = new int[studentNum];
		int[] assignment = new int[studentNum]; 
		Integer[] sum = new Integer[studentNum];
		int checkScore = 0;
		
		  for(int j=0; j<studentNum; j++) {
			  middleExam[j] = sc.nextInt();
			  finalExam[j] = sc.nextInt();
			  assignment[j] = sc.nextInt();
			  
			  sum[j] = (middleExam[j] * 35) + (finalExam[j] * 45) + (assignment[j] * 20);
			  
			  if(j+1 == K) checkScore = sum[j]; // 찾는 학생의 총점 확인
			  
		  }
		  
		  Arrays.sort(sum, Collections.reverseOrder());
		  
		  int count = 0;
		  for(int j=0; j<studentNum; j++) {
			  if(sum[j] == checkScore) count = j;
		  }
		  
		  count = count / (studentNum/10); 
		  
		  System.out.println("#"+ (i+1) +" " +credit[count]);
		}
	}
}

댓글