문제풀이/SW Expert Academy

[SWEA][D2] 1959. 두 개의 숫자열 (파이썬/Python)

얄루몬 2021. 9. 3. 15:43

<오답>

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()))
    result = 0
    
    if n == m:
        for i in range(n):
            result += a[i]*b[i]
    else:

        if n > m:
            c = n-m
            a = a[c:]
            for i in range(len(a)):
                result += a[i]*b[i]
        else:
            c = m-n
            b = b[c:]
            for i in range(len(b)):
                result += a[i]*b[i]
                
    print(f'#{tc} {result}')

# 생각도 안하고 긴쪽 오른쪽에 맞춰서 짧은 범위만큼만 곱해주면 되는 문제인 줄 알았지만.... 다 더한 값의 max값을 출력하는 것이었다.

 

 

<정답>

T = int(input())
for tc in range(1, T+1):

    N, M = map(int, input().split())
    nList = list(map(int, input().split()))
    mList = list(map(int, input().split()))

    result = 0
    if N > M:
        for i in range(N-M+1):
            tmp = 0
            for j in range(M):
                tmp += mList[j] * nList[i+j]
            if tmp > result:
                result = tmp
    else:
        for i in range(M - N+1):
            tmp = 0
            for j in range(N):
                tmp += nList[j] * mList[i + j]
            if tmp > result:
                result = tmp

    print(f'#{tc} {result}')