관리 메뉴

LC Studio

백준 4344 평균은 넘겠지 (Java) 본문

Java/백준 알고리즘

백준 4344 평균은 넘겠지 (Java)

Leopard Cat 2022. 3. 15. 11:28

문제.

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.

둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.

 

코드가 조금 복잡하긴 하지만,

도움없이 스스로의 힘으로 풀어내서 뿌듯하다.

자세한 설명은 주석을 참고바란다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main{
    public static void main(String[] args)throws IOException{
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        int N = Integer.parseInt(br.readLine()); //총 반복횟수 입력받음
        
        StringTokenizer st = null; //문자열 나눠서 저장하기 위해서 StringTokenizer 선언

        double[] last = new double[N]; //각 줄의 %값을 저장하기 위한 배열 선언

        for(int i=0;i<N;i++){
            int sum = 0; //각 줄의 합
            int over = 0; //각 줄에서 평균을 넘는 수의 개수
            st = new StringTokenizer(br.readLine());
            int A = Integer.parseInt(st.nextToken());
            int[] array = new int[A]; //StringTokenizer을 통해 나누어진 값을 저장할 배열
            for(int j=0;j<A;j++){
                array[j] = Integer.parseInt(st.nextToken());
                sum = sum+array[j]; //각 줄의 합 구하는 중
            }
            for(int y=0;y<A;y++){
                if(array[y]>(sum/A)){
                    over = over + 1; //각 줄에서 평균을 넘는 수의 개수 구하는 중
                }
            }
            last[i] = (over/(double)A)*100; //각 줄 최종계산
        }
        for(int i=0;i<N;i++){
            System.out.printf("%.3f",last[i]);
            System.out.println("%");
        }
    }
}

 

반응형

'Java > 백준 알고리즘' 카테고리의 다른 글

백준 1065 한수 (JAVA)  (0) 2022.03.16
백준 4673 셀프 넘버 JAVA  (0) 2022.03.15
백준 8958번 (JAVA)  (0) 2022.03.14
백준 3052 나머지(JAVA)  (0) 2022.03.11
백준 2577번 숫자의 개수  (0) 2022.03.11