두 개의 숫자열 (D2)
문제 링크
- 길이가 다른 문제열 2개를 마주보는 숫자들을 곱해 더한 경우의 수 중 최대값을 구하는 문제
- 이중 for문을 사용하여 곱한 숫자의 합을 구하는 것은 어렵지 않다
- 이 문제의 주의할 점은 먼저 입력된 배열이 뒤에 입력된 배열보다 크기가 무조건 작지 않다는 것이다
- 그래서 크기를 확인하고 뒤에 입력된 배열이 더 작은 경우, 크기를 저장하는 변수 N과 M을 변경해주고 A배열과 B배열을 바꿔주었다
Solution
import java.util.Scanner;
class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
int N, M, max, tempSum;
int[] A, B;
for (int t = 1; t <= T; t++) {
max = 0;
N = sc.nextInt(); M = sc.nextInt();
A = new int[N]; B = new int[M];
for (int i = 0; i < N; i++) {
A[i] = sc.nextInt();
}
for (int i = 0; i < M; i++) {
B[i] = sc.nextInt();
}
if (N > M) {
int temp = N; N = M; M = temp;
int[] tempArr = A; A = B; B = tempArr;
}
for (int i = 0; i <= Math.abs(M - N); i++) {
tempSum = 0;
for (int j = 0; j < N; j++) {
tempSum += A[j] * B[i + j];
}
if (max < tempSum) {
max = tempSum;
}
}
System.out.printf("#%d %d\n", t, max);
}
}
}