SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
이 문제는 길이가 짧은 숫자열과 긴 숫자열을 짧은 숫자열의 길이만큼 곱한 후 더해주는 문제입니다.
- 저는 m을 긴 숫자열(b), n을 짧은 숫자열(a)로 설정했습니다.
- 그 후에는 b가 a의 시작부터 끝까지 마주보는 경우를 구하기 위해 최대 횟수인 m - n + 1만큼 for문이 반복되도록 했습니다. 만약 n = 3 , m = 5라면 3회 반복하는 것입니다.
- 이후 마주보는 값을 곱하여 더한 값을 구한 뒤, 최대값을 찾습니다.
T = int(input())
for t in range(1, T + 1):
n, m = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
if n > m:
n, m = m, n
a, b = b, a
ans = 0
for i in range(m - n + 1): # 긴 리스트가 작은 리스트 길이만큼 돌 수 있도록 m - n + 1
tmp = 0
for j in range(n):
tmp += a[j] * b[j + i]
ans = max(ans, tmp)
print('#%d %d' % (t, ans))
피드백은 언제나 환영합니다.
'알고리즘 > SWEA' 카테고리의 다른 글
[Python] SWEA D2 1940번 - 가랏! RC카! (0) | 2022.06.02 |
---|---|
[Python] SWEA D2 1979번 - 어디에 단어가 들어갈 수 있을까 (0) | 2022.06.02 |
[Python] SWEA D2 1989번 - 초심자의 회문 검사 (0) | 2022.06.02 |
[Python] SWEA D2 1284번 - 수도 요금 경쟁 (0) | 2022.06.02 |
[Python] SWEA D2 1288번 - 새로운 불면증 치료법 (0) | 2022.06.02 |