[Softeer] 성적 평균

CHAEN·2022년 9월 11일
0

problem solving

목록 보기
32/33

문제

접근 방법

  • 파이썬의 리스트 슬라이싱 비슷하게 만들어 평균 구하기

나의 풀이1 - C++

#include<iostream>
#include<vector>
#include<cmath>

using namespace std;

int main(int argc, char** argv)
{	int n, k;
	scanf("%d %d", &n, &k);

	vector<int> scores;
	vector<pair<int, int>> slicing;
	
	// 점수 입력
	for(int i = 0; i < n; ++i){
		int score;
		scanf("%d", &score);
		scores.push_back(score);
	}
	// 구간 평균
	for(int i = 0; i < k; ++i){
		int start, end;
		float avg = 0;
		scanf("%d %d", &start, &end);

		for(int j = start - 1; j < end; ++j){
			avg += scores[j];
		}
		avg = (float)avg / (end - start + 1) * 100;
		printf("%.2f\n", round(avg) / 100);
	}

	return 0;
}

나의 풀이2 - C++

#include<iostream>
#include<vector>
#include<numeric>

using namespace std;

int main(int argc, char** argv)
{	int n, k;
	scanf("%d %d", &n, &k);

	vector<int> scores;
	
	// 점수 입력
	for(int i = 0; i < n; ++i){
		int score;
		scanf("%d", &score);
		scores.push_back(score);
	}
	// 구간 평균
	for(int i = 0; i < k; ++i){
		int start, end;
		float avg;
		vector<int> temp;

		scanf("%d %d", &start, &end);
		temp.assign(scores.begin() + start - 1, scores.begin() + end);
		
		avg = accumulate(temp.begin(), temp.end(), 0.0) / temp.size();

		printf("%.2f\n", avg);
	}

	return 0;
}

assign을 통해 원하는 구간만 얻을 수 있다.

profile
공부중입니다

0개의 댓글

관련 채용 정보