[SWEA]1959. 두개의 숫자열
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))
댓글남기기