Skip to content

Commit 670df96

Browse files
authored
[Week13] BOJ 2143: 두 배열의 합
1 parent 0e8f6e7 commit 670df96

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
import java.io.BufferedReader;
2+
import java.io.IOException;
3+
import java.io.InputStreamReader;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.StringTokenizer;
7+
import java.util.stream.Collectors;
8+
9+
public class Main {
10+
public static void main(String[] args) throws IOException {
11+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
12+
StringTokenizer st;
13+
14+
int T = Integer.parseInt(br.readLine());
15+
int A_n = Integer.parseInt(br.readLine());
16+
st = new StringTokenizer(br.readLine());
17+
int[] A = new int[A_n];
18+
for (int i = 0; i < A_n; i++) {
19+
A[i] = Integer.parseInt(st.nextToken());
20+
}
21+
22+
int B_n = Integer.parseInt(br.readLine());
23+
st = new StringTokenizer(br.readLine());
24+
int[] B = new int[B_n];
25+
for (int i = 0; i < B_n; i++) {
26+
B[i] = Integer.parseInt(st.nextToken());
27+
}
28+
29+
HashMap<Integer, Integer> A_map = new HashMap<>();
30+
HashMap<Integer, Integer> B_map = new HashMap<>();
31+
32+
for (int k = 1; k <= A_n; k++) {
33+
for (int i = 0; i <= A_n - k; i++) {
34+
int sum = 0;
35+
for (int j = 0; j < k; j++) {
36+
sum += A[i + j];
37+
}
38+
if (A_map.containsKey(sum)) {
39+
A_map.put(sum, A_map.get(sum) + 1);
40+
} else {
41+
A_map.put(sum, 1);
42+
}
43+
}
44+
}
45+
46+
for (int k = 1; k <= B_n; k++) {
47+
for (int i = 0; i <= B_n - k; i++) {
48+
int sum = 0;
49+
for (int j = 0; j < k; j++) {
50+
sum += B[i + j];
51+
}
52+
if (B_map.containsKey(sum)) {
53+
B_map.put(sum, B_map.get(sum) + 1);
54+
} else {
55+
B_map.put(sum, 1);
56+
}
57+
}
58+
}
59+
60+
long output = 0;
61+
List<Integer> list = A_map.keySet().stream().sorted().collect(Collectors.toList());
62+
for (int a_key : list) {
63+
long a_cnt = A_map.get(a_key);
64+
65+
if (!B_map.containsKey(T - a_key)) continue;
66+
67+
long b_cnt = B_map.get(T - a_key);
68+
output += a_cnt * b_cnt;
69+
}
70+
71+
System.out.println(output);
72+
}
73+
}

0 commit comments

Comments
 (0)