[백준] 4344. 평균은 넘겠지

문제

https://www.acmicpc.net/problem/4344

풀이

전체 테스트 케이스를 입력 받은 후 각 줄 맨 앞에는 학생 수를, 이어서는 학생들의 인원 수 만큼의 점수를 입력 받는다.
그리고 각 케이스 마다 평균을 넘는 학생들의 비율을 반올림해서 퍼센테이지를 구하는 문제.
테스트 케이스 숫자를 먼저 입력 받고(totalcase), 그 수 만큼 반복문을 돌려서 학생의 수를 입력 받는다. 또 그만큼의 배열(arr)을 만들고 배열의 사이즈만큼 반복문을 돌린다. 그 반복문 안에서 학생들의 점수를 입력 받고 배열에 넣어주고 총합을 구한다. 그리고 전체 평균을 구해준다(avg)
새로운 반복문을 만들어 평균보다 높은 점수의 학생수(count)를 구한다. 그리고 각 줄에서의 퍼센테이지를 구해 출력해준다.

코드

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

public class Q_4344 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int totalcase = Integer.parseInt(br.readLine());
		int[] arr;
		StringTokenizer st;

		for (int i = 0; i < totalcase; i++) {
			st = new StringTokenizer(br.readLine(), " ");
			int student = Integer.parseInt(st.nextToken());
			arr = new int[student];
			double sum = 0;

			for (int j = 0; j < student; j++) {
				int score = Integer.parseInt(st.nextToken());
				arr[j] = score;
				sum += score;
			}
			double avg = sum / student;

			double count = 0;
			for (int j = 0; j < student; j++) {
				if (arr[j] > avg) {
					count++;
				}
			}
			System.out.printf("%.3f%%\n", (count / student) * 100);
		}
	}
}

좋은 웹페이지 즐겨찾기