SW Expert Academy

[SWEA] [JAVA] [Difficulty 2] [1959] 두 개의 숫자열

c0mmedes 2022. 11. 16. 19:47
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Solution {
		
    public static void main(String[] args) throws Exception{
    	
    	
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T =  Integer.parseInt(br.readLine()); // 테스트 케이스
		ArrayList<Integer> arr = new ArrayList<>(); // 정답을 저장할 list
		int ans = 0;
		// 테스트케이스
		for(int tc=0; tc<T; tc++) {   
    		
			StringTokenizer st = new StringTokenizer(br.readLine()," ");
			
			int N = Integer.parseInt(st.nextToken()); // N개의 숫자로 구성된 문자열
			int M = Integer.parseInt(st.nextToken()); // M개의 숫자로 구성된 문자열
			
			int Narr[] = new int[N];
			int Marr[] = new int[M];		
			
			int sum = 0;
			ans = 0;
			
			// N개의 숫자로 구성된 문자열을 받아서 배열에 저장
			st = new StringTokenizer(br.readLine()," ");
			for(int i=0; i<N; i++) {
				Narr[i] = Integer.parseInt(st.nextToken());
			}
			
			// M개의 숫자로 구성된 문자열을 받아서 배열에 저장
			st = new StringTokenizer(br.readLine()," ");
			for(int j=0; j<M; j++) {
				Marr[j] = Integer.parseInt(st.nextToken());
			}
			
			// M 배열이 N 배열보다 클 때
			if(Narr.length < Marr.length) {
				for(int i=0; i<=(Marr.length-Narr.length); i++) {
					sum = 0;
					for(int j=0; j<Narr.length; j++) {
						sum += (Narr[j] * Marr[i+j]); 
					}			
					if(ans<sum) ans = sum;
				}
			// N 배열이 M 배열보다 클 때
			} else {
				for(int i=0; i<=(Narr.length-Marr.length); i++) {
					sum = 0;
					for(int j=0; j<Marr.length; j++) {
						sum += (Marr[j] * Narr[i+j]); 
					}			
					if(ans<sum) ans = sum;
				}
			}
			
	
			arr.add(ans);
		}
		
		
			
		for(int i=1; i<=T; i++) {
			System.out.println("#" + i + " " + arr.get(i-1));
		}
	
		}
}