반응형
문제
풀이
슬라이딩 윈도우 알고리즘을 이용해 풀이했다.
1. 0부터 k-1까지는 모두 sum에 더한다. 이때, 최대가 되는 합을 저장할 answer에 sum의 값을 넣는다.
for (int i = 0; i < k; i++) {
sum += arr[i];
}
answer = sum;
2. k부터 n-1까지는 arr[i]는 sum에 더하고, arr[i - k]는 sum에서 뺀다. answer과 sum 중 최댓값을 answer에 저장한다.
for (int i = k; i < n; i++) {
sum += arr[i];
sum -= arr[i - k];
answer = max(answer, sum);
}
코드
#include <iostream>
#include <algorithm>
using namespace std;
int arr[100001];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, k, sum = 0, answer = 0;
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
for (int i = 0; i < k; i++) {
sum += arr[i];
}
answer = sum;
for (int i = k; i < n; i++) {
sum += arr[i];
sum -= arr[i - k];
answer = max(answer, sum);
}
cout << answer;
return 0;
}
결과
반응형
'Programming > C++ - 백준' 카테고리의 다른 글
21921번 - 블로그 | 슬라이딩 윈도우 알고리즘 (C++) (0) | 2024.07.26 |
---|---|
1620번-나는야 포켓몬 마스터 이다솜 | 스택 오버플로우 by 지역변수 (C++) (0) | 2024.06.25 |
1764번 - 듣보잡 | 시간초과, binary search (C++) (0) | 2024.04.03 |
[백준] 10816번 : 숫자 카드 2 | binary search & unordered map (C++) (1) | 2024.04.01 |
[백준] 1920번 : 수 찾기 | binary search (C++) (0) | 2024.04.01 |
댓글