문제접근
•
이중포문으로 한 시점을 기준으로 누적 합을 구하고 그 합을 기준으로 계속적으로 최대값으로 업데이트한다
놓쳤던 부분
•
바깥 포문을 돌릴때 n만큼 돌리는 것이 아니라 n - k만큼 돌려야 한다
코드
2020 KB
0 ms
#include <iostream>
#include <vector>
int n, k;
std::vector<int> temp;
int answer = -999999999;
void input_setting()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
}
void input()
{
std::cin >> n >> k;
temp.resize(n);
for (int i = 0; i < n; i++)
std::cin >> temp[i];
}
void solution()
{
int tmp;
for (int i = 0; i <= n - k; i++)
{
tmp = 0;
for (int j = 0; j < k; j++)
tmp += temp[i + j];
if (answer < tmp)
answer = tmp;
}
}
void print()
{
std::cout << answer;
}
int main(void)
{
input_setting();
input();
solution();
print();
return (0);
}
C++
복사