https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=389&sw_prbl_sbms_sn=18278

 

Softeer

제한시간 : C/C++(1초), Java/Python(2초) | 메모리 제한 : 256MB N명의 학생들의 성적이 학번순서대로 주어졌다. 학번 구간 [A, B]가 주어졌을 때 이 학생들 성적의 평균을 구하는 프로그램을 작성하라. 입

softeer.ai

 

 

[난이도] level3
[유형] 부분합

[풀이]
구간의 합만 알면 평균을 구할 수 있기 때문에 부분합 배열을 이용하면 됩니다.

 

 

#include <cstdio>
#include <cmath>
using namespace std;
int N,K,sum[1000001];
int main(){
    scanf("%d%d",&N,&K);
    for(int i=1;i<=N;i++) {
        int v;
        scanf("%d",&v);
        sum[i]=sum[i-1]+v;
    }
    while(K--){
        int a,b;
        scanf("%d%d",&a,&b);
        double ans = (double)(sum[b]-sum[a-1])/(b-a+1);
        ans=ceil(ans*100)/100;
        printf("%.2f\n",ans);
    }
}



https://github.com/has2/Problem-Solving/blob/master/softeer/level3/성적_평균.cpp

+ Recent posts