Algorithm/BOJ
백준 2559번 C++
poopooreum
2023. 8. 8. 20:46
반응형
백준 2559번 수열
https://www.acmicpc.net/problem/2559
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net



정답 코드
#include<iostream>
using namespace std;
int arr[100001];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, k;
cin >> n >> k;
for (int x = 0; x < n; x++) {
cin >> arr[x];
}
int sum = 0, max = -987654321;
for (int x = 0; x < n; x++) {
if (x < k)
sum += arr[x];
else
sum = sum - arr[x - k] + arr[x];
if (x >= k-1) {
if (max < sum)
max = sum;
}
}
cout << max;
}
문제 풀이
n개만큼 입력을 받은 후 n개의 반복문을 돌립니다.
이때 x가 k보다 작을 때는 우선 sum변수에 다 더해주고 k보다 크거나 같을 시에는 sum값과 max값을 비교해서 최댓값을 구해줍니다. 그리고 sum값의 맨 첫 번째로 더한 값은 빼주고 현재값을 더해주면서 수열의 길이를 k로 맞추면서 이동하고 비교해줍니다.
반응형