자료구조&알고리즘/백준

[C++] 백준 10039번 - 평균 점수

celinayk 2022. 12. 27. 18:55
반응형

문제

상현이가 가르치는 아이폰 앱 개발 수업의 수강생은 원섭, 세희, 상근, 숭, 강수이다.
어제 이 수업의 기말고사가 있었고, 상현이는 지금 학생들의 기말고사 시험지를 채점하고 있다. 기말고사 점수가 40점 이상인 학생들은 그 점수 그대로 자신의 성적이 된다. 하지만, 40점 미만인 학생들은 보충학습을 듣는 조건을 수락하면 40점을 받게 된다. 보충학습은 거부할 수 없기 때문에, 40점 미만인 학생들은 항상 40점을 받게 된다.
학생 5명의 점수가 주어졌을 때, 평균 점수를 구하는 프로그램을 작성하시오.

입력

입력은 총 5줄로 이루어져 있고, 원섭이의 점수, 세희의 점수, 상근이의 점수, 숭이의 점수, 강수의 점수가 순서대로 주어진다.
점수는 모두 0점 이상, 100점 이하인 5의 배수이다. 따라서, 평균 점수는 항상 정수이다

출력

첫째 줄에 학생 5명의 평균 점수를 출력한다.

접근

다 더해서 나누기5를 하면 된다. 그런데 40점 미만은 40점으로 처리하라는 조건이 있으니까 if문으로 조건을 달아주면 간단하다 

 

코드

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>

using namespace std;

int main() {

	vector<int>num(5);
	int n;
	int sum = 0;

	for (int i = 0; i < num.size(); i++) {
		scanf("%d", &num[i]);
	}
	for (int i = 0; i < num.size(); i++) {
		if (num[i] < 40) {
			num[i] = 40;
		}
		sum += num[i];
	}
	
	printf("%d", sum / 5);
	

	return 0;
}

학습

조금 더 쉽게 풀 수 있는 방법이 있을 것 같아서 다른사람들은 어떻게 풀었는지 참고했다.

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

int main() {

	int n;
	int sum = 0;

	for (int i = 0; i < 5; i++) {
		scanf("%d", &n);
		if (n < 40) {
			n = 40;
		}
		sum += n;
	}
	
	printf("%d", sum / 5);

	return 0;
}

배열&벡터에 숫자를 받고 다시 반복문을 돌려서 구하는게 아니라 처음부터 입력과 동시에 sum을 구하는 더 쉬운 방법이 있다는것을 깨달았다!!!!

 

출처

10039번: 평균 점수 (acmicpc.net)

 

10039번: 평균 점수

입력은 총 5줄로 이루어져 있고, 원섭이의 점수, 세희의 점수, 상근이의 점수, 숭이의 점수, 강수의 점수가 순서대로 주어진다. 점수는 모두 0점 이상, 100점 이하인 5의 배수이다. 따라서, 평균 점

www.acmicpc.net