Algorithm/Baekjoon

#백준 2559, 파이썬, 리스트 슬라이싱 :

say! 2022. 9. 26. 17:18
728x90

-시간초과 난 코드

# 백준 누적 합 : 2559번 - 수열

n, k = map(int, input().split())  # 전체 날짜 수 n, 연속적인 날짜의 수 k

temp = list(map(int, input().split()))  # 측정한 온도

temp_sum = [0] * n
for i in range(n-k+1):
  for j in range(i, i+k):
    temp_sum[i] += temp[j]

print(max(temp_sum))

 

-수정한 코드

# 백준 누적 합 : 2559번 - 수열

n, k = map(int, input().split())  # 전체 날짜 수 n, 연속적인 날짜의 수 k

temp = list(map(int, input().split()))  # 측정한 온도

temp_sum = []
temp_sum.append(sum(temp[:k]))

for i in range(n-k):
  temp_sum.append(temp_sum[i] - temp[i] + temp[k+i])

print(max(temp_sum))

for문을 한 번 돌리는 걸로 시간초과를 피할 수 있게 되었다.

# 파이썬 리스트 슬라이싱 Slicing :

리스트에서 원하는 범위를 지정해 추출할 수 있다.

[start:end:step] step만큼 문자 건너뛰면서 추출

[:] 처음부터 끝까지

[start:] strat 인덱스부터 끝까지

[:end] 처음부터 end-1 인덱스까지

[start:end] start부터 end-1 인덱스까지