문제:
수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.
입력:
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다.
출력:
총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다.
풀이:
#include <iostream>
#include <vector>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int data_num, query_num, tmp_sum=0, tmp;
int start, end;
vector<int> sum;
cin>>data_num>>query_num;
for (int i=0;i<data_num;i++){
cin>>tmp;
tmp_sum += tmp;
sum.insert(sum.begin()+i, tmp_sum);
}
for (int i=0;i<query_num;i++){
cin>>start>>end;
cout<<sum[end-1]-sum[start-2]<<"\n";
}
return 0;
}
vector를 쓰는 것을 선호해서 vector를 활용하여 풀었다.
ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)을 입력해주지 않으면 같은 코드여도 runtime error가 나온다.
'Online Judge' 카테고리의 다른 글
백준 10986번 나머지 합 (C++) (1) | 2024.02.15 |
---|---|
백준 11660번 구간 합 구하기 5 (C++) (1) | 2024.01.23 |
백준 1546번 평균 (C++) (1) | 2024.01.23 |
C++ string에서 다른 자료형으로의 변환과 그 역 (1) | 2024.01.23 |
백준 11720번 숫자의 합 (C++) (2) | 2024.01.23 |