BOJ/๐Ÿฅˆ

โ˜…Prefix Sum ์ค‘๊ธ‰ - 5๋ฌธ์ œ()โ˜…

metamong 2023. 1. 18.

๐Ÿฐ ๋ˆ„์ ํ•ฉ ์œ ํ˜•์€ ์ฃผ๋กœ ์–ด๋ ค์šด ๋‚œ์ด๋„ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์˜ ๋‹ต์„ ๊ตฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋‹จ๋…์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋งŒ ์ผ๋ถ€ ๋ฌธ์ œ๋ฅผ ๊ณจ๋ผ ์ •๋ฆฌํ•ด๋ด„


โ˜… 11441 ํ•ฉ ๊ตฌํ•˜๊ธฐ โ˜…

 

import sys
input=sys.stdin.readline
N=int(input())
B=[]
a=0
for i in map(int,input().split()):
    a+=i
    B.append(a)
for _ in range(int(input())):
    a,b=map(int,input().split())
    if a==1:print(B[b-1])
    else:print(B[b-1]-B[a-2])

 

๐Ÿฐ ๋ˆ„์ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๊ฐ„์„ ๋งŒ๋“  ๋’ค, ๊ตฌ๊ฐ„ B์—์„œ ์›ํ•˜๋Š” ๊ตฌ๊ฐ„๋งŒํผ ๋ฐ”๋กœ indexing์œผ๋กœ B[b-1] - B[a-2] ์—ฐ์‚ฐํ•ด์ฃผ๋ฉด ์™„๋ฃŒ!


โ˜… 11659 ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ 4 โ˜…

 

#indexing over slicing
N, M = map(int, input().split()) 
numbers = list(map(int, input().split()))

totals = []
answers = []
total = 0

for i in range(N):
    total += numbers[i]
    totals.append(total)   

for _ in range(M):
    i, j = map(int,input().split())
    if i == 1:
        answers.append(totals[j-1])
    else:
        answers.append(totals[j-1] - totals[i-2])

for answer in answers:
    print(answer)

 

๐Ÿฐ ๋ˆ„์ ํ•ฉ list๋ฅผ ๋งŒ๋“ค ๋•Œ for๋ฌธ ํ•„์š”์—†์ด itertools์˜ accumulate ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

import sys
input = sys.stdin.readline
from itertools import accumulate

#indexing over slicing
N, M = map(int, input().split()) 
numbers = list(map(int, input().split()))

totals = list(accumulate(numbers))
answers = []

for _ in range(M):
    i, j = map(int,input().split())
    if i == 1:
        answers.append(totals[j-1])
    else:
        answers.append(totals[j-1] - totals[i-2])

for answer in answers:
    print(answer)

โ˜… 17390 ์ด๊ฑด ๊ผญ ํ’€์–ด์•ผ ํ•ด! โ˜…

 

import sys
input=sys.stdin.readline

N,Q=map(int,input().split())
l=sorted(list(map(int,input().split())))
t=0
culsum=[0]
for i in l:
    t+=i
    culsum.append(t)
for k in range(Q):
    L,R=map(int,input().split())
    print(culsum[R]-culsum[L-1])

 

๐Ÿฐ ์ •๋ ฌํ•˜๊ณ  ๊ตฌ๊ฐ„ ํ•ฉ ํ’€๋ฉด ๋! itertools์˜ accumulate ์‚ฌ์šฉํ•˜๋ฉด ์ข€ ๋” ์‹œ๊ฐ„ ๋‹จ์ถ•๋จ


โ˜… 11969 Breed Counting โ˜…

 

import sys
input=sys.stdin.readline

N,Q=map(int,input().split())
cows=[int(input()) for _ in range(N)]
prefix_sum=[[0,0,0] for _ in range(N)]

for i in range(0,N):
    if i ==0:prefix_sum[i][cows[i]-1] = 1
    if cows[i]==1:
        prefix_sum[i][0] = (prefix_sum[i-1][0]) + 1
        prefix_sum[i][1] = prefix_sum[i-1][1]
        prefix_sum[i][2] = prefix_sum[i-1][2]
    elif cows[i]==2:
        prefix_sum[i][0] = prefix_sum[i-1][0]
        prefix_sum[i][1] = (prefix_sum[i-1][1]) + 1
        prefix_sum[i][2] = prefix_sum[i-1][2]
    else:
        prefix_sum[i][0] = prefix_sum[i-1][0]
        prefix_sum[i][1] = prefix_sum[i-1][1]
        prefix_sum[i][2] = (prefix_sum[i-1][2]) + 1

for _ in range(Q):
    s,e=map(int,input().split())
    if s==1: print(*prefix_sum[e-1])
    else:
        l=[]
        x=prefix_sum[e-1]
        y=prefix_sum[s-2]
        for a,b in zip(x,y):
            l.append(a-b)
        print(*l)

 

๐Ÿฐ ์ฃผ์–ด์ง„ cow ๊ฐœ์ฒด ์ˆ˜์˜ index ์œ„์น˜ ๊ตฌ๊ฐ„์„ ์•Œ๊ณ  ๋‚˜๋ฉด, ์ฃผ์–ด์ง„ ๊ตฌ๊ฐ„ ๋‚ด์˜ cow 1, 2, 3 ๊ฐœ์ฒด ์ˆ˜๋ฅผ ๊ฐ๊ฐ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ

 

๐Ÿฐ ๊ตฌ๊ฐ„๋ณ„ ํ•ฉ์„ ๊ฐœ์ฒด์ˆ˜ ๋ณ„๋กœ ๊ฐ๊ฐ ๊ตฌํ•œ ๋’ค, ๋ˆ„์ ํ•ฉ ๊ฐœ๋…์— ๋งž๊ฒŒ ํฐ ๋ˆ„์  ํ•ฉ - ์ž‘์€ ๋ˆ„์  ํ•ฉ์„ ๊ตฌํ•จ


โ˜… 13900 ์ˆœ์„œ์Œ์˜ ๊ณฑ์˜ ํ•ฉ โ˜…

 

import sys
input=sys.stdin.readline
N=int(input())
l=list(map(int,input().split()))
total=sum(l)
ans=0
for i in range(N-1):
    total-=l[i]
    ans+=l[i]*total
print(ans)

 

๐Ÿฐ ์ „์ฒด ์ˆœ์„œ์Œ์˜ mulsum์€ ์œ„์™€ ๊ฐ™์ด ์ „์ฒด total์—์„œ ์•ž์˜ ์›์†Œ๋ฅผ for๋ฌธ์œผ๋กœ ๋Œ๋ฆฌ๋ฉฐ ํ•œ๊ฐœ์”ฉ ๋นผ๋‚˜๊ฐ€๋ฉด์„œ ๊ณ„์† ๋”ํ•ด๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค. ์ „์ฒด ๋ˆ„์ ํ•ฉ์„ ๊ณ„์† ๋นผ๋‚˜๊ฐ€๋ฉฐ for๋ฌธ ํ•œ ๋ฒˆ์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ mulsum์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ „์ฒด ์ˆœ์„œ์Œ(๋‘ ๊ฐœ ์›์†Œ)์˜ ํ•ฉ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ์œ ํ˜•


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€