#26. [백준_C언어] 4344 : 평균은 넘겠지

 

 입력 코드 

#include <stdio.h>

main() {
	int C, N;
	scanf("%d", &C);

	int i, j;
	int arr[1000];

	for (i = 0; i < C; i++) {
		scanf("%d", &N);
		int sum = 0;

		for (j = 0; j < N; j++) {
			scanf("%d", &arr[j]);
			sum += arr[j];
		}
		double mean = (double)sum / N;
		int count = 0;
		
		for (j = 0; j < N; j++) {
			if (arr[j] > mean)
				count++;
		}
		printf("%.3f", (double)count / N * 100);
		printf("%%\n");
	}
}

 

 코드 설명 

반복문과 조건문, 배열, 초기화를 이용하는 문제

#include <stdio.h>

main() {
	int C, N;
	scanf("%d", &C);

	int i, j;
	int sum = 0, mean, count = 0;
	int arr[1000];

	for (i = 0; i < C; i++) {
		scanf("%d", &N);
		for (j = 0; j < N; j++) {
			scanf("%d", &arr[j]);
		}

		for (j = 0; j < N; j++) {
			sum += arr[j];
			mean = sum / N;
			if (arr[j] > mean)
				++count;
		}
		printf("%lf", count / N * 100);
		printf("%%\n");
	}
}

퍼센트가 너무 높게 나와서 보니 반복문을 여러 개 쓰면서 중복으로 count 된 것 같았다. 그리고 출력할 때 형식지정자도 문제였다. 

#include <stdio.h>

main() {
	int C, N;
	scanf("%d", &C);

	int i, j;
	int arr[1000];

	for (i = 0; i < C; i++) {
		scanf("%d", &N);
		int sum = 0;

		for (j = 0; j < N; j++) {
			scanf("%d", &arr[j]);
			sum += arr[j];
		}
		double mean = (double)sum / N;
		int count = 0;
		
		for (j = 0; j < N; j++) {
			if (arr[j] > mean)
				count++;
		}
		printf("%.3f", (double)count / N * 100);
		printf("%%\n");
	}
}

 

마지막에 헤매다가 반복문을 돌면서 sum이랑 count를 초기화해줘야 하는 걸 안해서 계속 값이 크게 나왔다.

 

 

참고한 사이트

aorica.tistory.com/44

 

[백준] 4344번 평균은 넘겠지 C/C++ 문제 풀이 1차원배열

문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각

aorica.tistory.com

raise-meow.tistory.com/65

 

[백준 4344] 평균은 넘겠지 :: C언어

문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각

raise-meow.tistory.com

 

 

 문제 출처

www.acmicpc.net/problem/4344

 

4344번: 평균은 넘겠지

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

www.acmicpc.net