11659번: 구간 합 구하기 4
https://www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
◆접근방법
숫자들 한줄을 배열에 저장하고, 후에 주는 i와 j값 사이값을 일일이 더해주니 시간 초과가 나왔다.
생각을 해본결과 일일이 더하는 과정에서 시간이 많이 나온거 같아, 이 부분을 배열 a[i]에 그 값이 아닌 a[0]부터 a[i]까지 더한 값을 할당하고 계산을 a[j]-a[i-1]으로 하여 문제를 해결하였다.
◆코드
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
int main(){
int a[100001]={0};
int b,c,d,e;
scanf("%d",&b);
scanf("%d",&c);
for(int i=1;i<=b;i++){
scanf("%d",&a[i]);
a[i]+=a[i-1];
}
for(int i=0;i<c;i++){
scanf("%d",&d);
scanf("%d",&e);
printf("%d\n",a[e]-a[d-1]);
}
}
'코딩 공부 > 백준(C++)' 카테고리의 다른 글
[백준 2607][C++] 비슷한 단어 (0) | 2023.08.11 |
---|---|
[백준 15686][C++] 치킨 배달 (0) | 2023.08.09 |
[백준 9658][C++] 돌 게임 4 (0) | 2023.08.09 |
[백준 16974][C++] 레벨 햄버거 (0) | 2023.08.07 |
[백준 2941][C++] 크로아티아 알파벳, segfault, size_t (0) | 2023.07.22 |