티스토리 뷰

728x90

https://www.acmicpc.net/problem/11659

 

11659번: 구간 합 구하기 4

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j

www.acmicpc.net


  • 문제 : 

수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.

 

 

 


  • 풀이 :

수 N개를 arr에 넣고, i번째 인덱스에 i번째까지의 합을 넣어주었다.

이후 arr[j]의 값에서 arr[i]를 빼주었다.

 

 

 


  • 소스코드 : 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import sys
input = sys.stdin.readline
 
if __name__ =="__main__":
    N,M = map(int,input().split())
    nums = list(map(int,input().split()))
    sums = [0 for _ in range(N)]
    for i in range(N):
        if i != 0:
            sums[i] = sums[i-1+ nums[i]
        else:
            sums[i] = nums[i]
    for _ in range(M):
        i,j = map(int,input().split())
        if i == 1:
            print(sums[j-1])
        else:
            print(sums[j-1]-sums[i-2])
        
cs
320x100
댓글
© 2022 WonSeok, All rights reserved