TwoPointer_01_블로그(21921)

Eugenius1st·2022년 5월 1일
0

Algorithm_Baekjoon

목록 보기
77/158

TwoPointer01블로그(21921)

문제

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

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

입력

첫째 줄에 블로그를 시작하고 지난 일수 NNXX가 공백으로 구분되어 주어진다.
둘째 줄에는 블로그 시작 11일차부터 NN일차까지 하루 방문자 수가 공백으로 구분되어 주어진다.

출력

첫째 줄에 XX일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다.

만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다.

풀이

  • 각 구간(data)에 대하여 누적 합을 계산한 배열(prefix_sum)을 생성
  • 0에서 부터 x만큼 증가하여 각 x기간 동안의 누적 합을 배열(result)에 저장
  • result중 최댓값을 출력하고, 해당 최댓값의 개수를 출력

코드

import sys
sys.stdin = open ("input.txt", "rt")
input = sys.stdin.readline

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

sum_value = 0
prefix_sum = [0]
for i in data:
    sum_value += i
    prefix_sum.append(sum_value)

result = []

cnt = 0  
while cnt+x <= n:
    result.append(prefix_sum[cnt+x]-prefix_sum[cnt])
    cnt += 1
    
    
if max(result) == 0:
    print('SAD')
else:
    print(max(result))
    print(result.count(max(result)))

배운 것

코멘트

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글