티스토리 뷰
이번 포스팅은 백준 알고리즘 사이트의 4344번 평균은 넘겠지 문제를 C 언어로 코딩해보도록 하겠습니다. 아래 url로 접속하시면 문제를 볼 수 있습니다.
https://www.acmicpc.net/problem/4344
이번 포스팅은 지난 포스팅과 같은 단계로 if문 사용해보기 단계 문제입니다.
이 문제의 경우 입력 받을 케이스의 수 C와 각 케이스에서 입력 받을 학생의 수 N, 그리고 N명의 각 점수를 입력 받아 각 케이스마다 평균을 넘는 학생들의 비율을 소수점 셋째자리까지 구해 출력하는 문제 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <stdio.h>
void main() {
int num, i, j, stu, cnt = 0;
int sco[100];
double avg = 0;
scanf("%d", &num);
for(i = 0; i < num; i++){
scanf("%d", &stu);
for(j = 0; j < stu; j++){
scanf("%d", sco[j]);
avg += (double)sco[j];
}
avg = avg/(double)stu;
for(j = 0; j < stu; j++){
if(avg < (double)sco[j])
cnt++;
}
printf("%.2lf%%\n", ((double)(cnt/stu))*100.0);
avg = 0;
cnt = 0;
}
}
|
먼저 케이스의 갯수를 입력 받을 num, 각 케이스 별 학생의 수를 입력 받을 stu, 학생의 성적을 입력 받을 배열 sco의 크기를 100으로 선언해줍니다. 각 케이스의 평균을 구할 avg를 double형으로 지정하고 0으로 초기화 하여주고, 평균이 넘는 학생의 수를 구하기 위한 cnt 변수도 0으로 초기화하여 줍니다.
먼저 6라인에서 num으로 케이스의 갯수를 사용자로부터 입력 받게됩니다.
7라인부터는 각 케이스에 해당하는 학생의 수와 각 학생의 점수를 입력 받습니다. 먼저 케이스의 수인 num만큼 for문을 실행하고 scanf를 통해 학생의 수를 입력 받은 후, 이중 for문을 통해 각 학생의 점수를 입력받아 sco 배열에 저장합니다. 이후 avg 변수를 통해 sco의 모든 점수를 더하게 되는데 제 코드의 경우 avg는 double형, sco는 int형으로 선언하였기에 sco를 avg에 더할 때 double형으로 강제 형변환을 시켜주어 더해줍니다.
이후 avg를 stu만큼 나누어 평균을 구해줍니다.
각 케이스 별 평균을 구하였으므로 다시 이중 for문을 이용해 stu수만큼 반복하여 avg 값보다 큰 sco의 배열 값이 존재한다면 cnt를 하나씩 증가시켜 줍니다.
최종적으로 모든 값이 다 도출되었다면 printf를 사용해 각 케이스 별 cnt를 통해 전체 중 평균 점수 이상의 비율을 구해주고, 다음 케이스를 위해 avg와 cnt를 초기화시켜 주는 코드입니다.
저의 경우 코드를 짤 때 즉석에서 빠르게 짜려고 하는 경향이 있어서 코드를 작성하고 나서 블로그 포스팅을 하면 좋은 코드가 아니라고 생각되거나 조금 더 좋은 코드를 짤 수 있다고 생각하는 경우가 있는데, 조금 더 좋은 코드를 작성하게 되면 이후에 수정하여 나갈 계획입니다.
다음 포스팅에서는 다음 문제의 코드를 보도록 하겠습니다.
다음 포스팅에서 봐요 :))
'BaekJoon > C' 카테고리의 다른 글
[BaekJoon/C] 백준 4673번 셀프 넘버 (0) | 2019.05.18 |
---|---|
[BaekJoon/C] 백준 1110번 더하기 사이클 (0) | 2019.05.18 |
[BaekJoon/C] 백준 1546번 평균 (0) | 2019.04.06 |
[BaekJoon/C] 백준 10871번 X보다 작은 수 (0) | 2018.12.31 |
[BaekJoon/C] 백준 10817번 세 수 (0) | 2018.12.31 |
- Total
- Today
- Yesterday
- github
- 구글 애드센스 설치
- 백준 코딩
- C 언어
- python 코딩
- 백준
- webhacking
- 우분투 18.04
- Google Adsense
- Oldzombie
- 승인 후기
- Ubuntu 18.04
- 백준 알고리즘
- Git Bash
- webhacking.kr
- tistory blog
- Python 언어
- GIT
- 웹해킹
- 구글 애드센스 후기
- C 코딩
- c
- ubuntu
- 구글 애드센스
- ubuntu 18.04 LTS
- 구글
- python
- 구글 애드센스 승인
- 우분투
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |