블로그
https://www.acmicpc.net/problem/21921
21921번: 블로그
첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다
www.acmicpc.net
내 코드
시간초과 코드
시간초과 났던 이유
- 인덱싱 + sum 함수사용
- 처음 0~X일까지의 구간합을 구한 다음 거기에 다음 인덱스에서 필요한 값을 빼고, 더해주는 방식으로 수정
from sys import stdin
N, X = map(int, stdin.readline().split())
visited = list(map(int, stdin.readline().split()))
maxVisit = 0
maxVisitCount = 0
for i in range(N - X + 1):
sliceVisit = visited[i: i+X]
if maxVisit < sum(sliceVisit):
maxVisit = sum(sliceVisit)
maxVisitCount = 1
elif maxVisit == sum(sliceVisit):
maxVisitCount += 1
else:
pass
if maxVisit == 0:
print("SAD")
else:
print(maxVisit)
print(maxVisitCount)
성공 코드
from sys import stdin
N, X = map(int, stdin.readline().split())
visited = list(map(int, stdin.readline().split()))
intervalSum = sum(visited[0: X])
maxVisit = intervalSum
maxVisitCount = 1
for i in range(1, N - X + 1):
intervalSum = intervalSum - visited[i-1] + visited[i+X-1]
if intervalSum > maxVisit:
maxVisit = intervalSum
maxVisitCount = 1
elif intervalSum == maxVisit:
maxVisitCount += 1
if maxVisit == 0:
print("SAD")
else:
print(maxVisit)
print(maxVisitCount)
728x90
'Algorithm&CodingTest > Baekjoon' 카테고리의 다른 글
[Beakjoon][19637] 실버3 - IF문 좀 대신 써줘 Python (0) | 2024.05.05 |
---|---|
[Baekjoon] [20310] 실버3 - 타노스 Python (0) | 2024.05.05 |
[Baekjoon] [20920] 실버3 영단어 암기는 괴로워 Python (0) | 2024.01.29 |
[Baekjoon] [13305] 실버3 - 주유소 Python (1) | 2024.01.29 |
[Baekjoon] [2164] 실버4 - 카드2 Python (0) | 2024.01.29 |