[코딩 테스트] 소프티어 연습 문제 - 성적평균 (C++)

2023. 8. 12. 00:06·개발/자료구조, 알고리즘
반응형

소프티어 성적평균 문제를 풀어보았습니다.

 

소프티어 연습 문제 - 성적평균 (C++)

 

https://softeer.ai/practice/info.do?idx=1&eid=389&sw_prbl_sbms_sn=249449

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

 

 문제 

 

N명의 학생들의 성적이 학번순서대로 주어졌다.

학번 구간 [A, B]가 주어졌을 때 이 학생들 성적의 평균을 구하는 프로그램을 작성하라.

 

 

제약조건

 

1 ≤ N ≤ 10의 6 제곱인 정수

1 ≤ K ≤ 10의 4 제곱인 정수

1 ≤ Si ≤ 100 인 정수

1 ≤ Ai ≤ Bi ≤ N

 

입출력 예제

 

입력예제1
5 3
10 50 20 70 100
1 3
3 4
1 5
출력예제1
26.67
45.00
50.00

 

문제 설명 및 코드

 

일단 보자마자 가장 눈에 들어오는 것이 N과 K의 크기였습니다. 10의 6 제곱과 10의 4 제곱이라면 N제곱은 힘든 시간복잡도를 가질 것입니다. 따라서  N을 최대한 N번만 돌리고 K번 확인하는 것이 최적이라고 생각했습니다.

결국 입력을 받으면서 부분합 배열에 저장해 놓고 계산하면 되는 생각보다 간단한 문제였습니다.

#include<iostream>
#include<vector>

using namespace std;
int N, K;
#define MAX_N 1000001

int main(int argc, char** argv)
{
    cin >> N;
    cin >> K;
    int sum_table[MAX_N];
    int score = 0;
    sum_table[0] = 0;

    for(int i = 1; i <= N; i++) {
        cin >> score;
        sum_table[i] = sum_table[i-1] + score;
    }

    vector<double> results;
    int start, end;
    int diff, sum = 0;
    for(int j = 0; j < K;j++) {
        cin >> start;
        cin >> end;
        results.push_back((double)(sum_table[end] - sum_table[start-1])/(end - start + 1));
    }

    for(const auto& it:results) {
        printf("%.2f\n",it);
    }

	return 0;
}

 

 결론

 

level3 치곤 굉장히 간단한 문제였습니다. 만약 부분합 배열의 개념을 몰랐다면 어려웠을 수도 있지만 이제는 흔한 개념이어서 상대적으로 쉬운 문지였던 것 같습니다.

저작자표시 비영리 변경금지 (새창열림)

'개발 > 자료구조, 알고리즘' 카테고리의 다른 글

[소프티어] C++ 연습문제 함께하는 효도  (0) 2024.10.01
[코딩 테스트] 소프티어 연습 문제 - 장애물 인식 프로그램 (C++)  (0) 2023.06.05
[코딩 테스트] 프로그래머스 연습 문제 - 완주하지 못한 선수  (0) 2023.06.01
[코딩 테스트] 프로그래머스 연습 문제 - 기능개발  (0) 2023.05.31
[코딩 테스트] 프로그래머스 연습 문제 - 더 맵게  (0) 2023.05.30
'개발/자료구조, 알고리즘' 카테고리의 다른 글
  • [소프티어] C++ 연습문제 함께하는 효도
  • [코딩 테스트] 소프티어 연습 문제 - 장애물 인식 프로그램 (C++)
  • [코딩 테스트] 프로그래머스 연습 문제 - 완주하지 못한 선수
  • [코딩 테스트] 프로그래머스 연습 문제 - 기능개발
growing-dev
growing-dev
S/W 개발 관련 내용들과 취미나 육아, 맛집 등 관심 있는 내용을 공유하는 블로그입니다.
    반응형
  • growing-dev
    성장하는 개발자 블로그
    growing-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 개발
        • 개발 공통
        • 개발 환경
        • Git
        • 자료구조, 알고리즘
        • C, C++
        • Python
        • DevOps
        • CMake
      • 공부
        • 영어
        • 경제
      • 취미, 육아 N
        • 육아
      • 생활정보
  • 블로그 메뉴

    • 홈
  • 링크

    • growing-dev GitHub
  • 공지사항

    • [블로그 시작] 성장하는 개발자 스토리입니다.
  • 인기 글

  • 태그

    앨리웨이
    키즈카페
    프로그래머스
    TDD
    C++
    필스너
    티스토리챌린지
    git
    오픽
    Python
    Clang
    OPIC
    오블완
    하이볼
    생산성
    VS Code
    dfs
    소프티어
    WSL
    CMake
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
growing-dev
[코딩 테스트] 소프티어 연습 문제 - 성적평균 (C++)
상단으로

티스토리툴바