목차

     

     


     

     

    [백준 11659번 C/C++] 구간 합 구하기 4

     


     

    해결전략

     

    sum[] 배열로 저장하지 않고 이중 for문을 사용하면 시간초과. 

     

     


     

    코드

     

    방법1.

    #include<stdio.h>
    using namespace std;
    
    int num[100001];
    int sum[100001];
    
    int main() {
    	int n, m;
    	scanf("%d %d", &n, &m);
    	
    	for(int i=1; i<=n; i++){
    		scanf("%d", &num[i]);
    		sum[i]=sum[i-1]+num[i];
    	}
    	
    	for(int i=1; i<=m; i++){
    		int a, b, result=0;
    		scanf("%d %d", &a, &b);
    		
    		result=sum[b]-sum[a-1];
    		
    		printf("%d\n", result);
    	}
    	
    	return 0;
    }

     

     

    방법2.

    #include<stdio.h>
    using namespace std;
    
    int main() {
    	int n, m;
    	scanf("%d %d", &n, &m);
    	
    	int num[n+1];
    	int sum[n+1];
    	sum[0]=0;
    	
    	for(int i=1; i<=n; i++){
    		scanf("%d", &num[i]);
    		sum[i]=sum[i-1]+num[i];
    	}
    	
    	for(int i=1; i<=m; i++){
    		int a, b, result=0;
    		scanf("%d %d", &a, &b);
    		
    		result=sum[b]-sum[a-1];
    		
    		printf("%d\n", result);
    	}
    	
    	return 0;
    }

    배열크기를 n+1로 지정해도 소요시간은 똑같다.