https://www.acmicpc.net/problem/21921
21921번: 블로그
첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다
www.acmicpc.net
생각해 보기
- 최대 먼저 찾고 그 값과 일치하는 인덱스를 찾을 필요는 없다.
- 구간합 혹은 투포인터로 한칸씩 움직이며 그때그때 갱신해도 된다.
코드
더보기
#include<iostream>
#include<vector>
using namespace std;
int N,X,tmp;
vector<int> partsum;
void input(){
cin>>N>>X>>tmp;
partsum.push_back(tmp);
for(int i=1;i<N;++i){
cin>>tmp;
partsum.push_back(partsum[i-1]+tmp);
}
}
void solution(){
int mnum=partsum[X-1], cnt=1;
for(int i=X;i<N;++i){
int now = partsum[i]-partsum[i-X];
if(mnum==now)
++cnt;
else if(mnum<now){
mnum=now;
cnt=1;
}
}
if(mnum==0)
cout<<"SAD"<<'\n';
else
cout<<mnum<<'\n'<<cnt<<'\n';
}
int main(){
ios_base::sync_with_stdio(0);
cout.tie(0);
cout.tie(0);
input();
solution();
return 0;
}

728x90
'알고리즘 > 백준 문제' 카테고리의 다른 글
| 19441 - 햄버거 분배 (0) | 2023.03.03 |
|---|---|
| 1515 - 수 이어 쓰기 (0) | 2023.03.02 |
| 20920 - 영단어 암기는 괴로워 (0) | 2023.02.28 |
| 1244 - 스위치 켜고 끄기 (0) | 2023.02.28 |
| 1205 - 등수 구하기 (0) | 2023.02.27 |
댓글