190107 SW Expert Academy(1983) 조교의 성적 매기기

2019-01-07

1983. 조교의 성적 매기기

문제 링크

https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PwGK6AcIDFAUq

풀이 과정
  • 총점이 같은 경우는 없으므로 총점으로 학생의 석차를 찾는다.
  • 전체 학생의 성적을 내림차순으로 정렬해 석차를 찾고, 석차에 따른 성적을 판정한다.
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb=new StringBuilder();
        String[] grade={"A+","A0","A-","B+","B0","B-","C+","C0","C-","F"};

        int test=Integer.parseInt(bf.readLine());
        for(int i=0;i<test;i++){
            String[] info=bf.readLine().split(" ");
            int n=Integer.parseInt(info[0]); // 학생 수
            int k=Integer.parseInt(info[1]); // 성적을 찾고싶은 학생의 번호
            ArrayList<Double> list=new ArrayList<>(); // 전체 학생의 성적을 내림차순 리스트로 구성
            double find_score=0.0;// 총점이 같은 경우는 없으므로 성적을 찾고싶은 학생의 총점을 저장, 검색

            for(int j=0;j<n;j++) {
                String[] scores = bf.readLine().split(" ");// 학생 점수 읽어오기
                double total_scores=Double.parseDouble(scores[0])*0.35+Double.parseDouble(scores[1])*0.45+Double.parseDouble(scores[2])*0.2;// 점수 계산
                list.add(total_scores);// 리스트에 점수 추가

                if(j+1==k)
                    find_score=total_scores;
            }

            list.sort(Collections.reverseOrder()); // 성적을 내림차순으로 정렬

            int idx=list.indexOf(find_score);
            idx/=(n/10);// 원하는 학생의 석차를 찾아 성적 계산
            sb.append("#"+(i+1)+" "+grade[idx]+"\n");
        }
        System.out.println(sb);
    }
}
  • Collections.reverseOrder() -> 내림차순으로 정렬!!!!(큰수->작은수)
  • 아직도 java Collection과 입/출력부터 헤메고 있다. 이러면 안댕…