삽집하는 개발들/알고리즘

[81일차][백준][누적합][14929]귀찮아(SIB)

악투 2023. 11. 28. 13:52
반응형

문제 설명

 

입력

n과 xi가 주어짇나. n은 10만 이하ㅇ고, xi는 젗ㄹ댓값이 100이하인 정수디이다.

 

출력

위에서 구하란 걸 구하면 된ㄷ.

 

예제 입력, 예제 출력

3
1 -2 3
-5

 

 

코드 및 설명

import sys

n = int(sys.stdin.readline())
n_arr = list(map(int, sys.stdin.readline().split(" ")))
prefix_sum = 0
result = 0

for i in range(n-1, 0, -1):  
  prefix_sum += n_arr[i]
  
  result += n_arr[i-1] * prefix_sum
    
print(result)

 

이 문제는 누적합 문제로 문제 설명에 있는 것은 수열의합, 시그마 공식이다.

이런식으로 result = n_arr[1] * n_arr[2] + n_arr[2] * n_arr[3] + n_arr[3] 값을 구해주면 된다.

맨 마지막은 더 해주기만 하면 되기때문에 마지막 부터 차례로 내려가면서 

처음 for문은

prefix_sum +=  3 ( n_arr[2] )

result += -2 (n_arr[i-1]) * 3

-6이 나오고

이런식으로 차례로 내려가면서 구하면 값을 구할 수 있다.

반응형