C로 구현한 4344번 평균은 넘겠지 문제 풀이입니다.
#include <stdio.h>
int main() {
int n = 0, p=0;
double score[1001] = {0}, per=0;
scanf("%d", &n);
for(int i=0; i<n; i++) {
int count = 0;
double avg = 0, result=0;
scanf("%d", &p);
for(int j=0; j<p; j++) {
scanf("%lf", &score[j]);
avg = avg + score[j];
}
result = avg / p;
for(int z=0; z<p; z++) {
if(score[z] > result)
count++;
}
per = ((double)count/(double)p) * 100;
printf("%.3lf%%\n", per);
}
}
첫번째 for문 내부에 두번째 for문을 돌려 입력한 변수 p만큼까지 score배열 각 자리에 점수를 입력하고 평균을 구하기
위해 avg 변수에 score배열 각 자리 값을 누적합니다. 두번째 for문이 끝난 직후 누적된 avg 변수를 인원수(변수 p)로
나눠 최종 평균값을 result 변수에 할당합니다.
마지막 세번째 for문에서는 score 값 중 최종평균값을 넘는 학생의 수를 구하기 위해 if문을 사용하고 count를 1씩
증가시키도록 합니다. 마지막 for문까지 끝난 후에는 퍼센트 단위로 출력해야하기 때문에
'(최종평균값을 넘는 학생의 수 / 학생의 수) * 100' 으로 계산해줍니다. 최종 값이 double형으로 계산되어 나타나야 하기
때문에 정수형 변수인 count와 p 를 double형으로 강제형변환을 합니다.
문제에 '출력 시 소수점 셋째 자리까지' 가 기재되어 있어 코드 내에서 출력 시 "%.3lf%%\n" 와 같이 작성해줍니다.
[소감]
이번 문제는 다른 문제에 비해 머리 회전이 굉장히 잘 되었다! 그리고 이전 문제에서 변수 선언 시 위치를 잘못 썼는데
이번에 그런 문제점을 의식하면서 신중하게 작성한 덕인걸까! 막힘 없이 문제를 금방 풀 수 있었다 ㅎㅎ
https://www.acmicpc.net/problem/4344
'백준(C언어) 풀이 > 1차원 배열' 카테고리의 다른 글
백준(C) 8958번 OX퀴즈 풀이 (0) | 2021.07.13 |
---|---|
백준(C) 1546번 평균 풀이 (0) | 2021.07.12 |
백준(C) 3052번 나머지 풀이 (0) | 2021.07.12 |
백준(C) 2577번 숫자의 개수 풀이 (0) | 2021.07.12 |
백준(C) 2562번 최댓값 풀이 (0) | 2021.07.12 |