벡터에 accumulate 를 사용하여 푸니 시간초과가 떴다
그렇다면 속도 향상을 위해서 벡터보다 빠르다는 정적 배열을 사용하고
두 개의 구간을 계산하는 accumulate 대신에 누적 합의 차를 통해 얻은 구간합을 이용하여
구간 계산을 두 번에서 한 번으로 연산과정을 줄여 처리 속도를 높여 해결하였다
주석처리한 부분은 시간초과가 났던 벡터 풀이다
https://www.acmicpc.net/problem/11659
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
int m;
int num;
int i;
int j;
int ans;
int sum = 0;
int ar[100004];
// vector<int> v;
cin >> n >> m;
for (int t = 1; t <= n; t++)
{
cin >> num;
sum += num;
ar[t] = sum;
}
for (int t = 1; t <= m; t++)
{
cin >> i >> j;
ans = ar[j] - ar[i - 1];
cout << ans << "\n";
}
// **use case - vector accumulate : time over**
// cin >> n >> m;
// for (int t = 0; t < n; t++)
// {
// cin >> num;
// v.emplace_back(num);
// }
// for (int t = 0; t < m; t++)
// {
// cin >> i >> j;
// sum = accumulate(v.begin()+i-1,v.begin()+j, 0);
// cout << sum << "\n";
// }
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 1120/c++] 문자열 (0) | 2022.07.24 |
---|---|
[백준 7568/c++] 덩치 (0) | 2022.07.23 |
[백준 1065/c++] 한수 (0) | 2022.07.21 |
[백준 5635/c++] 생일 (0) | 2022.07.20 |
[백준 2579/c++] 계단 오르기 (0) | 2022.07.19 |
댓글