BOJ 백준 21921번 블로그 | Python
🔎 문제 설명
🩶 실버 3
- 난이도 ★★☆☆ - 투포인터
처음엔 for문을 돌리면서 슬라이싱으로 풀었는데 시간초과
가 났다.
그래서 그 후엔 불필요하게 반복되는 시간을 줄이고자 투포인터 방식으로 접근하였다.
이건 시작 포인트와 끝 포인트 사이 원소 개수가 정해져 있는 생각보다 쉬운 문제다.
시작 포인트 기준으로 새로 포함되는 원소를 더하고, 포함되지 않는 원소를 빼주면서 슬라이싱을 진행하는 식으로 코드를 작성하였다.
💻 내 코드
import sys
input = sys.stdin.readline
N, X = map(int,input().split())
blog = list(map(int, input().split()))
inter_sum = 0
max_blog = -1
cnt = 0
if max(blog) == 0:
max_blog = 0
else:
inter_sum = sum(blog[:X])
max_blog = inter_sum
cnt = 1
for start in range(X, N):
inter_sum -= blog[start-X]
inter_sum += blog[start]
if inter_sum > max_blog:
max_blog = inter_sum
cnt = 1
elif inter_sum == max_blog:
cnt += 1
if max_blog == 0:
print('SAD')
else:
print(max_blog)
print(cnt)
💙 You need to log in to GitHub to write comments. 💙
If you can't see comments, please refresh page(F5).