본문 바로가기
⌨️CS-PS/백준_수학&구현

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

by 미르의 블로그 2023. 2. 7.
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
반응형