일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Flutter
- programmers
- 한정 분기
- php 프로그래밍 입문 솔루션
- 자바 스프링
- SWEA
- php 프로그래밍 입문 문제풀이
- 페이코 추천인
- 페이코 초대코드
- C
- C언어
- 파이썬
- 스프링
- php 프로그래밍 입문 3판
- 자바
- JAVA SPRING
- php 프로그래밍
- 최단 경로
- 배열
- 플러터 개발환경 설정
- 플러터
- php 프로그래밍 입문
- php
- 페이코 추천인코드
- 백준
- 페이코 친구코드
- Java
- php 프로그래밍 입문 예제
- php 프로그래밍 입문 연습문제
- spring
- Today
- Total
ImJay
[C언어] 백준 1546번 : 평균 본문
백준 1546번 : 평균
- 사용언어 : C언어
1. 문제
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
2. 코드
#include <stdio.h>
#include <limits.h>
int main (void) {
int input;
double sum;
double max=INT_MIN;
scanf("%d", &input);
double sc[input];
for(int i=0; i<input; i++) {
scanf("%lf ", sc+i);
if (sc[i] > max) max = sc[i];
}
for(int i=0; i<input; i++) {
sc[i] = (sc[i]/max)*100;
sum += sc[i];
}
printf("%.2lf", sum/input);
}
3. 풀이
int형 변수 input은 과목의 개수 N입니다.
double형 변수 sc[input]은 점수이며, sum은 점수의 합입니다.
정수로 받음에도 double로 선언해준 까닭은 계산 중(최댓값으로 나누면) 소수점이 나올 수 있기 때문입니다.
이와 같은 이유로 최댓값 max도 double형으로 선언했습니다.
과목의 개수를 알 수 없기 때문에 input을 먼저 받고, sc[input]을 선언해주었습니다.
최댓값 또한 알 수 없기 때문에 max는 INT_MIN으로 지정해주었으며
이 때, <limits.h> 헤더파일을 포함해주어야 합니다.
max를 INT_MIN, 즉 최솟값으로 설정해야 하는 이유는 처음 받는 sc[i] 값을 최댓값으로 지정하기 위함입니다.
처음의 sc[0]이 max로 지정되어야, 나머지 sc[1], sc[2], ... 와 정상적으로 값을 비교할 수 있기 때문입니다.
1) for문으로 sc[i]의 값을 받고, 미리 선언해준 max(INT_MIN, 최솟값)와 비교하여 최댓값 max를 정합니다.
2) for문으로 sc[i]의 연산을 통해 문제에서 원하는 점수의 값을 구하고, 이를 sum에 더하여 점수의 합을 구해줍니다.
3) 마지막으로, sum/input을 출력하여 조작된 점수의 평균을 구합니다.
%.2lf에서 %.2는 소숫점 둘째자리까지만 나타내도록 합니다.
'백준 - C, C++ > 05. 1차원 배열' 카테고리의 다른 글
[C언어] 백준 4344번 : 평균은 넘겠지 (2) | 2020.10.02 |
---|---|
[C언어] 백준 8958번 : OX퀴즈 (0) | 2020.09.30 |
[C언어] 백준 3052번 : 나머지 (6) | 2020.09.28 |
[C언어] 백준 2577번 : 숫자의 개수 (0) | 2020.09.24 |
[C언어] 백준 2562번 : 최댓값 (0) | 2020.09.24 |