"SWEA 1959 두 개의 숫자열"의 두 판 사이의 차이

(새 문서: ==개요== ;{{subst:PAGENAME}} * {{SWEA 헤더}} {{SWEA 난이도 2-2}} |} ==C++== <source lang='cpp'> </source> ==Java== <source lang='java'> </source>)
 
 
(사용자 2명의 중간 판 3개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
;SWEA 1959 두 개의 숫자열
{{SWEA|난이도=2}}
*
 
{{SWEA 헤더}}
{{SWEA 난이도 2-2}}
|}


==C++==
==C++==
<source lang='cpp'>
<syntaxhighlight lang='cpp'>
</source>
#include <iostream>
using namespace std;
int main() {
    int T;
    scanf("%d", &T);
    int N, M;
    int A[20], B[20];
    for(int tc=1; tc<=T; tc++) {
        scanf("%d %d", &N, &M);
        for(int i=0; i<N; i++) scanf("%d", &A[i]);
        for(int i=0; i<M; i++) scanf("%d", &B[i]);
        int max = -99999999;
        if( M > N ) {
            for(int offset=0; offset<M-N+1; offset++) {
                int value = 0;
                for(int i=0; i<N; i++) value += A[i] * B[i+offset];
                if( value > max ) max = value;
            } 
        }
        else {
            for(int offset=0; offset<N-M+1; offset++) {
                int value = 0;
                for(int i=0; i<M; i++) value += A[i+offset] * B[i];
                if( value > max ) max = value;
            }
        }
        printf("#%d %d\n", tc, max);
    }
}
</syntaxhighlight>


==Java==
==Java==
<source lang='java'>
<syntaxhighlight lang='java'>
</source>
import java.util.Scanner;
import java.util.Arrays;
class Solution {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for( int t=1; t<=T; t++) {
            int n, m, i, k;
            n = sc.nextInt();
            m = sc.nextInt();
            int a[] = new int[n];
            int b[] = new int[m];
            for( i=0; i<n; i++) a[i] = sc.nextInt();
            for( i=0; i<m; i++) b[i] = sc.nextInt();
            int sum, max = 0;
            for( k=0; k<m-n+1; k++ ) {
                sum = 0;
                for( i=0; i<n; i++) sum += a[i] * b[i+k];
                if( sum > max ) max = sum;
            }
            for( k=0; k<n-m+1; k++ ) {
                sum = 0;
                for( i=0; i<m; i++) sum += a[i+k] * b[i];
                if( sum > max ) max = sum;
            }
            System.out.format("#%d %d\n", t, max );
        }
    }
}
</syntaxhighlight>

2023년 8월 25일 (금) 01:47 기준 최신판

1 개요[ | ]

SWEA 1959 두 개의 숫자열

2 C++[ | ]

#include <iostream>
using namespace std;
int main() {
    int T;
    scanf("%d", &T);
    int N, M;
    int A[20], B[20];
    for(int tc=1; tc<=T; tc++) {
        scanf("%d %d", &N, &M);
        for(int i=0; i<N; i++) scanf("%d", &A[i]);
        for(int i=0; i<M; i++) scanf("%d", &B[i]);
        int max = -99999999;
        if( M > N ) {
            for(int offset=0; offset<M-N+1; offset++) {
                int value = 0;
                for(int i=0; i<N; i++) value += A[i] * B[i+offset];
                if( value > max ) max = value;
            }   
        }
        else {
            for(int offset=0; offset<N-M+1; offset++) {
                int value = 0;
                for(int i=0; i<M; i++) value += A[i+offset] * B[i];
                if( value > max ) max = value;
            }
        }
        printf("#%d %d\n", tc, max);
    }
}

3 Java[ | ]

import java.util.Scanner;
import java.util.Arrays;
class Solution {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for( int t=1; t<=T; t++) {
            int n, m, i, k;
            n = sc.nextInt();
            m = sc.nextInt();
            int a[] = new int[n];
            int b[] = new int[m];
            for( i=0; i<n; i++) a[i] = sc.nextInt();
            for( i=0; i<m; i++) b[i] = sc.nextInt();
            int sum, max = 0;
            for( k=0; k<m-n+1; k++ ) {
                sum = 0;
                for( i=0; i<n; i++) sum += a[i] * b[i+k];
                if( sum > max ) max = sum;
            }
            for( k=0; k<n-m+1; k++ ) {
                sum = 0;
                for( i=0; i<m; i++) sum += a[i+k] * b[i];
                if( sum > max ) max = sum;
            }
            System.out.format("#%d %d\n", t, max );
        }
    }
}
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}