알고리즘 공부/파이썬(Python)

SWEA 1959번 D2 두 개의 숫자열 파이썬

마달랭 2024. 6. 26. 15:10
반응형

리뷰

D2 문제는 확실히 D1 문제보다는 어려워진 것 같다.

문제 풀이

  1. 출력 시 테스트 케이스의 순번 출력이 필요하므로 범위는 1, T + 1로 설정해 준다.
  2. A, B 배열의 길이를 고려하여 2중 for문을 통해 각 인자의 곱의 합을 temp 변수에 추가해 준다.
  3. 가장 큰 temp값을 result 변수에 저장 후 테스트 케이스 순번과 함께 출력해 준다.

참고 사항

  1. 문제에 배열 안에 들어올 수 있는 정수값의 범위가 정해져 있지 않다. result 변수를 초기화 할때 큰 음수 값으로 정해준다.
  2. A, B 배열의 길이가 같거나 서로 상이할 수 있기에 각 케이스 마다 처리 조건을 설정해 준다.

정답 코드

def q1959():
    # SWEA 1959번 D2 두 개의 숫자열 파이썬
    t = int(input())
    for i in range(1, t + 1):
        n, m = map(int, input().split())
        a = list(map(int, input().split()))
        b = list(map(int, input().split()))
        result = -2 ** 31
        for j in range(abs(n - m) + 1):
            temp = 0
            if n - m <= 0:
                for k in range(n):
                    temp += a[k] * b[j + k]
            else:
                for k in range(m):
                    temp += a[j + k] * b[k]
            result = max(result, temp)
        print(f"#{i} {result}")
q1959()

 

728x90
반응형