알고리즘 풀이/SWEA
[SWEA][JAVA] 1959. 두 개의 숫자열
by cornsilk-tea
2022. 1. 16.
package level_2;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class SW_1959 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int test_case = 1; test_case <= T; test_case++) {
int[][] arr = new int[2][];
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
for (int cnt = 0; cnt < 2; cnt++) {// Aj와 Bj를 받기위함
st = new StringTokenizer(br.readLine());
int Token_cnt = st.countTokens();
arr[cnt] = new int[Token_cnt];// 주의
for (int n = 0; n < Token_cnt; n++) {
arr[cnt][n] = Integer.parseInt(st.nextToken());
// bw.write(arr[cnt][n] + " "); //왜 이때 출력하면 이 순간에 출력되는게아니라 한번에 출력될까?
// 버퍼에 저장했다가 한번에 출력하기 떄문.
}
}
int result = 0;
int sum = 0;
if (arr[0].length < arr[1].length) { // 두번째것이 더 크면
for (int a = 0; a < 1 + arr[1].length - arr[0].length; a++) {// N크기의 배열을 움직임
sum = 0;
int cnt = 0; // 작은 배열의 위치를 알려주기 위함
for (int b = 0; b < arr[0].length; b++) {// 배열끼리 탐색
sum += arr[0][cnt] * arr[1][a + b];
// System.out.println(
// "arr[0][" + cnt + "]=" + arr[0][cnt] + " arr[1][" + (a + b) + "]=" + arr[1][a + b]);
cnt += 1;
}
// System.out.println("sum = " + sum);
if (sum > result) {
result = sum;
}
}
} else { // 첫번째것이 더 클때
for (int a = 0; a < 1 + arr[0].length - arr[1].length; a++) {// M크기의 배열을 움직임
sum = 0;
int cnt = 0; // 작은 배열의 위치를 알려주기 위함
for (int b = 0; b < arr[1].length; b++) {
sum += arr[1][cnt] * arr[0][a + b];
// System.out.println(
// "arr[1][" + cnt + "]=" + arr[1][cnt] + " arr[0][" + (a + b) + "]=" + arr[0][a + b]);
cnt += 1;
}
// System.out.println("sum = " + sum);
if (sum > result) {
result = sum;
}
}
}
// System.out.println("#" + test_case + " " + result);
bw.write("#" + test_case + " " + result + "\n");
}
bw.flush();
bw.close();
}
}