반응형
https://www.acmicpc.net/problem/2559
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net
1. sum()을 이용하면 시간복잡도가 O(n)이 되므로 시간초과
n,k=map(int, input().split())
num=list(map(int, input().split()))
maxv=0
for i in range(n):
tmp=sum(num[i:i+k]) #sum()의 시간복잡도는 O(n)
maxv=max(maxv, tmp) #max()의 시간복잡도는 O(n)
print(maxv)
2. 따라서 투포인터를 이용해 앞의 인덱스를 빼주고, 뒤의 인덱스를 더해주며 each값을 갱신하기
n,k=map(int, input().split())
nums=list(map(int, input().split()))
each=sum(nums[:k])
maxv=each
for i in range(k,n):
each+=nums[i]
each-=nums[i-k]
maxv=max(maxv, each)
print(maxv)
반응형
'프로그래밍 > 알고리즘 & 자료구조' 카테고리의 다른 글
백준 2018 : 수들의 합 5 with 파이썬 (0) | 2024.01.31 |
---|---|
백준 1806 : 부분합 with 파이썬 (0) | 2024.01.30 |
백준 14497 : 주난의 난 with 파이썬 (0) | 2024.01.28 |
백준 1261 : 알고스팟 with 파이썬 (1) | 2024.01.26 |
[프로그래머스] 게임 맵 최단거리 with 파이썬 : BFS (0) | 2024.01.25 |
댓글