본문 바로가기

Java/SWEA

[JAVA] SWEA 1959. 두개의 숫자열

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PpoFaAS4DFAUq&categoryId=AV5PpoFaAS4DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=JAVA&select-1=2&pageSize=10&pageIndex=2

 

SW Expert Academy

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

swexpertacademy.com

 

https://yongku.tistory.com/entry/SW-expert-Academy-SWEA-1959%EB%B2%88-%EB%91%90-%EA%B0%9C%EC%9D%98-%EC%88%AB%EC%9E%90%EC%97%B4-%EC%9E%90%EB%B0%94Java

 

[SW expert Academy] SWEA 1959번 두 개의 숫자열 자바(Java)

츄르사려고 코딩하는 코집사입니다. 1. [SW expert Academy] SWEA 1959번 두 개의 숫자열 자바(Java) 1) 난이도 : D2 2) 문제번호 : 1959번 3) 문제 출처 swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpoF

yongku.tistory.com

 

https://eboong.tistory.com/556

 

[SWEA] 1959. 두 개의 숫자열 in JAVA

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpoFaAS4DFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com A나 B를 자유롭게

eboong.tistory.com

 

정답 

 

import java.util.*;

class Solution {
    public static void main(String args[]) throws Exception {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt(); 
        
        for (int t = 1; t <= T; t++) { 
            int N = sc.nextInt(); 
            int M = sc.nextInt(); 
            
            int A[] = new int[N]; 
            int 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();
            }
            
            int answer = 0; 
            // 각 위치에서의 내적 값을 계산하고 최대값을 찾음
            for (int i = 0; i <= Math.abs(N - M); i++) {
                int sum = 0; 
                for (int j = 0; j < Math.min(N, M); j++) {
                    if (N > M) { // 첫 번째 숫자열의 길이가 더 긴 경우
                        sum += A[i + j] * B[j]; 
                    } else { // 두 번째 숫자열의 길이가 더 긴 경우
                        sum += A[j] * B[i + j]; 
                    }
                }
                answer = Math.max(answer, sum); 
            }
            

            System.out.printf("#%d %d\n", t, answer);
        }
    }
}