#문제링크
https://www.acmicpc.net/problem/11659
11659번: 구간 합 구하기 4
첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j
www.acmicpc.net
#나의풀이
import sys
if __name__ == '__main__':
count, times = map(int, sys.stdin.readline().split())
number = list(map(int, sys.stdin.readline().split()))
number.insert(0,0)
for i in range(1, count+1):
number[i] += number[i-1]
for _ in range(times):
s, e = map(int, sys.stdin.readline().split())
print(number[e]-number[s-1])
#해설
간단하게 슬라이스해서 합을 구했더니 시간초과가 떳다.
숫자를 받은 배열에 0번째에 0을 넣어주고 각 이전값을 더해주는 방식으로 누적합을 만들어주었다.
이후 시작지점과 끝지점을 받고 끝지점과 시작지점-1지점을 뺴줘 그 부분의 합을 구했다
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 11727 2xn 타일링2 (0) | 2022.06.13 |
---|---|
[백준/파이썬] 11726 2xn 타일링 (0) | 2022.06.13 |
[백준/파이썬] 9461 파도반 수열 (0) | 2022.06.10 |
[백준/파이썬] 9375 패션왕 신해빈 (0) | 2022.06.10 |
[백준/파이썬] 9095 1, 2, 3 더하기 (0) | 2022.06.10 |