Tiny Bunny
본문 바로가기
Algorithm/Python

[BOJ #21921] 블로그

by nowag 2024. 5. 2.

문제

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

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

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

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

 

입력

첫째 줄에 블로그를 시작하고 지난 일수 𝑁와 𝑋가 공백으로 구분되어 주어진다.

둘째 줄에는 블로그 시작 1일차부터 𝑁일차까지 하루 방문자 수가 공백으로 구분되어 주어진다.

 

출력

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

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

 

제한

  •  1 ≤ 𝑋 ≤ 𝑁 ≤ 250,000
  •  0 ≤ 방문자 수 ≤ 8,000

내가 쓴 코드

# N: 블로그 시작하고 지난 일 수, X: 기간
N, X = map(int, input().split())
# N일 동안 방문자 수 (길이 N인 리스트)
visitors = list(map(int, input().split()))

sum_visitors = sum(visitors[:X])
visits = [sum_visitors]
for i in range(N - X):
    sum_visitors = sum_visitors - visitors[i] + visitors[i + X]
    visits.append(sum_visitors)
max_visitors = max(visits)

if max_visitors == 0:
    print('SAD')
else:
    print(max_visitors)
    print(visits.count(max_visitors))


# 시간초과
# visits = []
# for i in range(N - X + 1):
#     sum_visit = 0
#     for j in range(i, i + X):
#         sum_visit += visitors[j]
#     visits.append(sum_visit)
# max_visit = max(visits)
# if max_visit == 0:
#     print('SAD')
# else:
#     print(max_visit)
#     print(visits.count(max_visit))

어제 문제 하루 있다 풀어서 설명을 다 듣고 풀게 되었다.. ㅎㅎ 어제 문제 안푼 나 반성합니다... 그래도 먼저 생각나는 방법으로 한 번 풀어보고 시간 초과를 우선적으로 당해보았다,,^^ 그리고 설명 들었던 것을 회상하며 코드를 써내려갔다. 생각이 안날 줄 알았는데, 그래도 설명을 이해를 했었나보다. 잘 풀어나갔다! 근데 틀렸습니다가 떠서 당황... 그건 visits 리스트에 처음 구한 sum_visitors의 값을 안 넣고 시작해서 틀렸던 것이었다. 쨋든 다른 코드 보지 않고 혼자 힘으로 풀어냈댱 - !!

 

제출 결과

728x90
반응형

'Algorithm > Python' 카테고리의 다른 글

[BOJ #1303] 전쟁 - 전투  (0) 2024.05.06
[BOJ #1012] 유기농 배추  (2) 2024.05.06
[BOJ #14553] 팰린드롬 게임  (0) 2024.04.30
[BOJ #1764] 듣보잡  (0) 2024.04.30
[BOJ #17390] 이건 꼭 풀어야 해!  (2) 2024.04.23