1 분 소요

1959.두개의 숫자열

문제

N 개의 숫자로 구성된 숫자열 Ai와 M개의 숫자로 구성된 숫자열Bj가 있습니다.

서로 마주보는 숫자들을 곱하고 모두 더 할 때 최댓값은?

예제

Ai = [1, 5, 3]

Bj= [3, 6, -7, 5, 4]

1 5 3 1 5 3 …

3 6 -7 5 4 3 6 -7 5 4 …

제약사항

N과 M은 3이상 20이하 입니다.

생각해보기

N과 M개의 숫자열이 주어집니다. 우선 리스트로 만들어주고, 인덱스로 수를 계산 할 것입니다.

len을 통해서 만약에 예시 처럼 3과 5라면 0~2,0~4까지 주어질 거고 그에 대한 경우의 수는 (00,11,22)(01, 12, 23)(02,13,24) 이렇게 구성됩니다.

그렇다면 N x M의 이차원 배열로 만든다면..?

  0 1 2
0 v    
1 v v  
2 v v v
3   v v
4     v

아니면 처음부터 하는데 실행이 끝나면 맨 첫번째 행을 삭제해서 다시 만든다.

그래서 만약 N과 M이 같다면 멈추도록 합니다.

풀어보기

T = int(input())
for tc in range(1, T+1):
    N, M = map(int, input().split())
    A = list(map(int, input().split()))
    B = list(map(int, input().split()))
    if len(B) < len(A):
        As = B
        Bs = A
    else:
        As = A
        Bs = B
    
    Slist = []
    while len(As) <= len(Bs):
        sum = 0
        for i in range(len(As)):
            sum += As[i] * Bs[i]
        Slist.append(sum)
        del Bs[0]
                  
    print(f'#{tc}',max(Slist))

카테고리:

업데이트:

댓글남기기