본문 바로가기
알고리즘/투포인터

[백준][Python] 21921번 블로그

by 임짠짠 2023. 2. 28.
반응형
 

21921번: 블로그

첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다

www.acmicpc.net

 

코드

n,x = map(int,input().split())
visit = list(map(int,input().split()))
v_max = sum(visit[:x])
num = sum(visit[:x])
cnt = 1

for i in range(x,n):
	num = num - visit[i-x] + visit[i]
	if num > v_max:
		v_max = num
        cnt = 1
	elif num == v_max:
		cnt += 1

if v_max == 0:
	print("SAD")
else:
	print(v_max)	
	print(cnt)

 

설명

투포인터 알고리즘과 비슷한 슬라이딩 윈도우 알고리즘으로 풀었다.

 

더해야 하는 개수가 고정되어 있기 때문에 처음에만 visit[0]부터 visit[x-1] 까지 더해주고

그 이후부터는 중간값은 계속 겹치기 때문에 가장 첫번째 값을 빼주고 다음 값을 더해주면 된다.

 

 

반응형

댓글