내 아이디어: list window 크기만큼 슬라이싱 후 sum(), 다음 max() - min() 정답~

처음에 최댓값 최솟값이란 글자만 보고 sorted()랑 reversed() 써서 재배열 후 window 사이즈에 든 값의 합 찾는건줄… 문제 좀 잘 읽어보자… 그 어디에도 재배열이란 말은 없는데 꽂혔었나


T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for i in range(1, T + 1):
    answer = 0 # 항상 변수 초기화 해둬야
    m_n = list(map(int, input().split()))
    input_list = list(map(int, input().split()))
    added_list = []
    n = m_n[1]
    # 재배열 불가! 문제 이해 잘 해보자,,, window slicing
    for j in range (len(input_list) - n + 1): 
        # window 갯수는 전체 리스트 길이 - window 크기 "+1"
        # 전체 윈도우 다 더해서 min-max
        sliced_list = input_list[j : j + n]
        sum_window = sum(sliced_list)
        added_list.append(sum_window)
    answer = max(added_list) - min(added_list)
    print(f"#{i} {answer}") # 무조건 다 for 문 안에
    
'''
재배열 되는 줄 알고 한 삽질,,,
        min_m += (sorted_list[j])
        max_m += (sorted_list[(m_n[0]-j-1)]) 
        #m_n[0] = 들어있는 항 갯수이므로 거기서 -1 해줘야 제대로 된 index
        #-1 안 하면 범위 초과 runtime error
        #reversed() 함수 쓰면 reversed_list 때문에 runtime error
        #sorted 하나로 풀어라!
        '''