상세 컨텐츠

본문 제목

[Softeer] 성적 평균 (C++)

PROGRAMMING/Algorithm

by koharin 2023. 4. 11. 02:05

본문

728x90
반응형
#include <iostream>
#include <vector>
using namespace std;

int main(){

    int N,K;
    scanf("%d %d", &N, &K);

    vector<int> sum(N+1,0);

   for(int m=0; m<N; m++) { 
        int n;
        scanf("%d", &n); 
        sum[m+1] = sum[m] + n;
    }

    for(int m=0; m<K; m++){
        int A,B;
        scanf("%d %d", &A, &B);
        printf("%.2f\n", (double)(sum[B] - sum[A-1])/(B-A+1));
    }
}

O(n) 대신 O(1) 시간복잡도로 문제를 해결할 수 있는 구간 합 알고리즘을 이 문제를 풀면서 알게 되었고, 해당 알고리즘을 그대로 적용했다.

다른 점은 평균을 구해야 하는건데, 분자와 분모 모두 괄호를 사용해준 후 double로 type casting을 해주고 "%.2f" 로 소수점 둘째 자리까지 출력해주어야 오차를 고려한 정답이 나온다.

 

728x90
반응형

관련글 더보기