๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] Class3_11659๋ฒˆ_๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 4

Dbswnstjd 2022. 10. 31. 00:49

๋ฌธ์ œ

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

 

11659๋ฒˆ: ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 4

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N๊ณผ ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” 1,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ์…‹์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ตฌ๊ฐ„ i์™€ j

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 11659๋ฒˆ ๋ฌธ์ œ - ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ
import sys
n, m = map(int, sys.stdin.readline().split())
arr = list(map(int, input().split()))

sum_list = [0]
total = 0
for i in range(len(arr)):
    total += arr[i]
    sum_list.append(total)
for _ in range(m):
    i, j = map(int, input().split())
    print(sum_list[j] - sum_list[i-1])

๊ตฌ๊ฐ„ํ•ฉ์„ ์‚ดํŽด๋ณด๋ฉด

# S๋Š” 0๋ถ€ํ„ฐ i๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ํ•ฉ
S = [0,5,9,12,14,15]
# 0~2์˜ ๊ตฌ๊ฐ„ํ•ฉ
arr[0] + arr[1] + arr[2] = 12
S[3] - S[0] = 12 - 0 = 12

# 1~3์˜ ๊ตฌ๊ฐ„ํ•ฉ
arr[1] + arr[2] + arr[3] = 9
S[4] - S[1] = 14 - 5 = 9

์ด์™€ ๊ฐ™์€ ๊ณต์‹์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. 

์ด๋ฅผ ํ†ตํ•ด i ๋ถ€ํ„ฐ j ๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ํ•ฉ์€

(j+1๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ํ•ฉ) - (i๊นŒ์ง€์˜ ๊ตฌ๊ฐ„ํ•ฉ) ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

๊ณต์‹์„ ์–ป๊ฒŒ๋˜๋ฉด ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.