각 길이가 다른 두 개의 숫자열의 서로 마주보는 숫자들을 곱한 뒤 더했을 때 최댓값을 구하는 문제이다.
#testcase
T = int(input())
for i in range(0, T) :
#각 숫자열의 길이
NM = input()
A = input().split()
A = list(map(int, A)) # 배열의 모든 값을 정수형(int)로 변환한 list를 만듦
B = input().split()
B = list(map(int, B))
# B열의 길이가 더 짧을 경우, A와 B swab (이렇게 하면 항상 B열이 더 긺)
if len(A) > len(B) :
B, A = A, B
arr = []
for k in range(len(B)-len(A)+1) :
sum = 0
for r in range(len(A)) :
sum += A[r] * B[r+k]
arr.append(sum) # 각 시도들을 배열에 넣고 그 중에서 제일 큰 값을 출력
print(f'#{i+1} {max(arr)}')
단, 더 긴 쪽의 양끝을 벗어나서는 안 된다.
e.g.) len(A) = 5, len(B) = 3 --- > try_no = 3
arr = [A1*B1 + A2*B2 + A3*B3, A1*B2 + A2*B3 + A3*B4, A1*B3 + A2*B4 + A3*B5 ]
여전히 memory error가 발생한다.
리스트나 변수를 굳이 만들지 않고 코드를 작성하는 법을 익혀야 될 것 같다.