[SWEA] 1959. 두 개의 숫자열 _ Java

jii0_0·2022년 8월 24일
0

SW Expert Academy

목록 보기
27/33
post-thumbnail

두 개의 숫자열 (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);

		}
	}
}
profile
느려도 꾸준히

0개의 댓글