728x90
tc = int(input())
for T in range(1,tc+1):
N, M = map(int, input().split())
#print("N: {} M:{}".format(N,M))
ai = list(map(int,input().split()))# print(ai)
bi=[]
ci=[]
for k in range(M):
tmp=ai[k:k+N-M+1]# print(tmp)
bi.append(tmp)
for j in range(0,N-M+1): # 여기에서 애를 많이 먹었다
tmp2=0
for i in range(0,M): #
tmp2+=bi[i][j]
ci.append(tmp2)
mx,mn=max(ci),min(ci)
print("#{0} {1}".format(T,mx-mn))
어느정도 쉽게 구현했으나 이차원 배열에서 요소별 합을 구하는게 오래걸렸다.
for j in range(0,N-M+1):
tmp2=0
for i in range(0,M): #
tmp2+=bi[i][j]
ci.append(tmp2)
사실 이중 포문은 쉽게 생각하였으나 i,j의 범위를 구하는게 오래걸렸다.
try, except 써가면서 어디에서 에러나는지 확인했는데,
i범위는 괜찮은데 j의 끝부분에서 에러가 나는것을 먼저 확인했고, (이때까지 거의 한시간 걸렸다)
case1에선 되는데 case2에서 런타임에러가 나는걸 확인했다.
그래서 범위가 잘못되었다는걸 깨닫고 다행이 고칠수 있었다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 10250 ACM 호텔 (0) | 2021.01.28 |
---|---|
[프로그래머스] LEVEL2 스킬트리, python3, Summer/Winter Coding(~2018) (2) | 2021.01.28 |
4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드 (0) | 2021.01.11 |
SW Expert Academy 파이썬 프로그래밍 기초(1) (0) | 2021.01.01 |
Big O notation 관련 (0) | 2020.12.30 |