만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

양 끝 균형 부분 배열

면접 대비

시간 제한1초메모리 제한1024 MB

요약
양 끝 원소의 합이 그 사이 원소들의 합과 같은 부분배열의 개수를 구합니다. 단, 길이는 2 이상이어야 합니다.
난이도

보통10점 중 5점

유형
누적 합, 해시맵
정답자
아직 제출이 없습니다

문제

길이가 nn인 정수 배열 aa가 주어진다. 부분 배열 [al,al+1,⋯ ,ar][a_l, a_{l+1}, \cdots, a_r]은 l<rl < r이고 al+ar=al+1+⋯+ar−1a_l + a_r = a_{l+1} + \cdots + a_{r-1}이면 양 끝이 균형인 부분 배열이다.

예를 들어 [4,9,5][4, 9, 5], [−1,3,5,9][-1, 3, 5, 9], [0,0][0, 0]은 양 끝이 균형인 부분 배열이고, [0][0], [−2,−3,−5][-2, -3, -5], [1,1][1, 1]은 그렇지 않다.

aa의 부분 배열 중 양 끝이 균형인 것의 개수를 구하라.

입력

첫 줄에 테스트 케이스의 개수 tt (1≤t≤1041 \le t \le 10^4)가 주어진다.

각 테스트 케이스의 첫 줄에는 배열 aa의 길이 nn (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5)이 주어진다.

각 테스트 케이스의 둘째 줄에는 정수 a1,a2,⋯ ,ana_1, a_2, \cdots, a_n (−109≤ai≤109-10^9 \le a_i \le 10^9)이 주어진다.

모든 테스트 케이스의 nn을 합하면 2⋅1052 \cdot 10^5을 넘지 않는다.

출력

각 테스트 케이스마다 양 끝이 균형인 aa의 부분 배열 개수를 한 줄에 출력한다.

힌트

첫 번째 테스트 케이스에서 양 끝이 균형인 부분 배열은 다음과 같다.

  • [a1,a2,a3,a4]=[1,2,3,4][a_1, a_2, a_3, a_4] = [1, 2, 3, 4]
  • [a2,a3,a4,a5]=[2,3,4,5][a_2, a_3, a_4, a_5] = [2, 3, 4, 5]

두 번째 테스트 케이스에서 양 끝이 균형인 부분 배열은 다음과 같다.

  • [a1,a2]=[0,0][a_1, a_2] = [0, 0]
  • [a2,a3]=[0,0][a_2, a_3] = [0, 0]
  • [a1,a2,a3]=[0,0,0][a_1, a_2, a_3] = [0, 0, 0]

세 번째 테스트 케이스에서 양 끝이 균형인 부분 배열은 다음과 같다.

  • [a2,a3]=[5,−5][a_2, a_3] = [5, -5]
  • [a1,a2,a3,a4]=[−10,5,−5,10][a_1, a_2, a_3, a_4] = [-10, 5, -5, 10]

예제1

  1. 예제 1

    입력
    7
    5
    1 2 3 4 5
    3
    0 0 0
    4
    -10 5 -5 10
    6
    2 2 2 2 2 2
    7
    1 0 1 0 1 0 1
    5
    1000000000 1000000000 1000000000 1000000000 1000000000
    1
    -1000000000
    
    예상 출력
    2
    3
    2
    3
    5
    2
    0