⌨️CS-PS/백준_수학&구현

[Baekjoon/백준][4344][C/C++] 평균은 넘겠지

미르의 블로그 2023. 2. 7. 00:05
728x90
반응형
『목차』
0. 개요

1. 문제
2. 풀이
3. 코드

0. 개요

수학, 사칙연산 문제. 기본적인 문제라 가볍게 풀고 넘어가겠다.

1. 문제

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

 

4344번: 평균은 넘겠지

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

www.acmicpc.net

[문제]

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

[입력]

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

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

[출력]

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

[예제 입력 1]

5
5 50 50 70 80 100
7 100 95 90 80 70 60 50
3 70 90 80
3 70 90 81
9 100 99 98 97 96 95 94 93 91

[예제 출력 1]

40.000%
57.143%
33.333%
66.667%
55.556%

2. 풀이

"퍼센트(%) 기호 자체를 출력하기 위해서는 퍼센트 기호를 '2개 중복'해 주어야 한다"라는 사실을 알고 있다면, 쉽게 풀 수 있는 문제이다.

코드와 주석에 적힌 내용을 따라가다 보면 쉽게 풀리는 문제이기 때문에, 자세한 풀이는 생략하겠다.

3. 코드

#pragma warning(disable:4996)
#include <stdio.h>

int main(int argc, char* argv[]) {
	int C; scanf("%d", &C);

	for (int i = 0; i < C; i++) {
		int grade[1000] = {};
		int avg = 0, count = 0;
		int N; scanf("%d", &N);

		/* 점수 총합 구하기 */
		for (int j = 0; j < N; j++) {
			scanf("%d", &grade[j]);
			avg += grade[j]; //변수는 avg이지만, sum을 구하는 과정이다.
		}

		/* 평균 구하기 */
		avg /= N;

		/* 평균을 넘는 학생 수 구하기 */
		for (int j = 0; j < N; j++)
			if (grade[j] > avg)
				count++;

		/* 비율 출력하기 */
		printf("%.3f%%\n", (double)count / N * 100);
	}

	return 0;
}

/*
퍼센트(%) 기호 자체를 출력하기 위해서는 퍼센트 기호를 '2개 중복'해 주어야 한다.
*/

 

728x90
반응형