컴굥일지
[BOJ/백준 21921][C++] 블로그 본문
반응형
문제
https://www.acmicpc.net/problem/21921
문제 내용
블로그를 시작한 후 N일이 지났다.
X일 동안 가장 많이 들어온 방문자 수를 출력한다. (0명이면 SAD 출력)
최대 방문자 수가 0명이 아니라면 둘째 줄에 기간이 몇 개 있는도 출력한다.
문제 풀이
슬라이딩 윈도우로 문제를 해결할 수 있다.
나는 연속된 X일의 모든 방문자 수를 벡터에 저장한 후, max_element와 count 함수를 통해 해결했다.
코드
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, x;
cin >> n >> x;
vector<int> arr(n, 0);
for (int i = 0; i < n; i++)
cin >> arr[i];
vector<int> ssum(n - x + 1, 0);
for (int i = 0; i < x; i++)
ssum[0] += arr[i];
for (int i = 1; i < n - x + 1; i++) {
ssum[i] = ssum[i - 1] + arr[i + x - 1] - arr[i - 1];
}
int num = *max_element(ssum.begin(), ssum.end());
if (num == 0) {
cout << "SAD";
} else {
cout << num << '\n';
cout << count(ssum.begin(), ssum.end(), num);
}
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[BOJ/백준 13414][C++] 수강신청 (0) | 2023.08.12 |
---|---|
[BOJ/백준 17219][C++] 비밀번호 찾기 (0) | 2023.08.12 |
[BOJ/백준 1759][C++] 암호 만들기 (0) | 2023.08.09 |
[BOJ/백준 21608][C++] 상어 초등학교 (0) | 2023.08.08 |
[Programmers/프로그래머스 lv2][C++] 귤 고르기 (0) | 2023.08.07 |
Comments