[백준] 21921 블로그

백준 21921 블로그

문제

찬솔이는 블로그를 시작한 지 벌써 N일이 지났다.

요즘 바빠서 관리를 못 했다가 방문 기록을 봤더니 벌써 누적 방문 수가 6만을 넘었다.

찬솔이는 X일 동안 가장 많이 들어온 방문자 수와 그 기간들을 알고 싶다.

찬솔이를 대신해서 X일 동안 가장 많이 들어온 방문자 수와 기간이 몇 개 있는지 구해주자.

입력

  • 첫 번째 줄: N, X
  • 두 번째 줄 ~: 1~N일동안의 방문자 수

출력

X일 동안 가장 많이 들어온 방문자 수

해결 방식

슬라이딩 윈도우

  • 처음 보는 알고리즘이다..
  • 고정 사이즈의 윈도우가 이동하면서 윈도우 내에 있는 데이터를 이용해 문제를 풀이하는 알고리즘
  • 왼쪽부터 시작해 한 칸씩 오른쪽으로 이동

코드

n, x = map(int, input().split())
visit = list(map(int, input().split()))

if max(visit) == 0:
    print("SAD")
else:
    max_visit = sum(visit[0:x])
    value = max_visit
    count = 1
    for i in range(x, n):
        value -= visit[i-x]
        value += visit[i]
        if value > max_visit:
            max_visit = value
            count = 1
        elif value == max_visit:
            count += 1
    print(max_visit)
    print(count)

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus