Coding Test/SW Expert Academy

[SWEA] 1959. 두 개의 숫자열 c++

owls 2022. 11. 18. 09:50
728x90
  • 문제

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

N 개의 숫자로 구성된 숫자열 Ai (i=1~N) 와 M 개의 숫자로 구성된 숫자열 Bj (j=1~M) 가 있다.서로 마주보는 숫자들을 곱한 뒤 모두 더할 때 최댓값을 구하라.

위 예제의 정답은 아래와 같이 30 이 된다.
 

 

  • 문제 해결
#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, char** argv)
{
	int test_case;
	int T;
	cin>>T;

	for(test_case = 1; test_case <= T; ++test_case)
	{
		int n = 0, m = 0;
        cin >> n >>m;
        
        vector<int> A(n, 0), B(m,0);
        
        for(int i = 0; i < n; i++){
        	cin >> A[i]	;
        }
        for(int i = 0; i < m; i++){
        	cin >> B[i];
        }
        
        if( n < m){
            vector<int> C;
        	C = A;
            A = B;
            B  = C;
        }
        
        n = A.size();
        m = B.size();
        
        int result = INT8_MIN;
        for(int i = 0; i <= n-m; i++){
            int sum = 0;
        	for(int j = 0; j < m; j++){
            	sum += A[j + i] * B[j];
            }
            result = max(result, sum);
        }
        cout << "#" << test_case << " " << result << endl;
	}
	return 0;
}
728x90