https://codeforces.com/problemset/problem/2033/D
12, 4, -4에서 12는 사실 의미가 없는 숫자??이긴 하지만, 결국 set을 통한 누적합에서 겹치는 값이 나오면? 0이 있는거
근데 set에 12가 들어가있고 4랑 -4의 합이 0 이니까 누적합이 되면서 다시 12가 나오고, 처음에 set에 이미 12가 들어가 있었기 때문에 이 구간에서 합이 0이 발생했다는걸 알 수 있음
import java.io.*;
import java.util.HashSet;
import java.util.StringTokenizer;
public class CF_2033D {
// input
private static BufferedReader br;
// variables
private static int T, N;
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
input();
bw.write(solve());
bw.close();
} // End of main()
private static String solve() throws IOException {
StringBuilder sb = new StringBuilder();
while (T-- > 0) {
N = Integer.parseInt(br.readLine());
HashSet<Long> set = new HashSet<>();
set.add(0L);
StringTokenizer st = new StringTokenizer(br.readLine());
long sum = 0;
int ans = 0;
for (int i = 0; i < N; i++) {
int num = Integer.parseInt(st.nextToken());
sum += num;
if (!set.add(sum)) {
set = new HashSet<>();
set.add(0L);
sum = 0;
ans++;
}
}
sb.append(ans).append('\n');
}
return sb.toString();
} // End of solve()
private static void input() throws IOException {
T = Integer.parseInt(br.readLine());
} // End of input()
} // End of Main class