반응형
온도의 최대값
- 매일 일정한 시간에 온도를 측정하여 기록한다고 하자.
- 정수 n 입력받음.
- 정수 k 입력받음.
- n일동안 입력된 온도들이 있다. 이 때 k일동안 연속하여 온도를 합쳤을 때 그 수치가 최대가 되는 값을 찾아라.
- 최대값을 출력함.
풀이
#include <iostream>
#include <vector>
using namespace std;
int main() {
int i, n, k, sum=0, max;
cin >> n >> k;
vector<int> a(n);
for (i=0; i<n; i++) {
cin >> a[i];
}
for (i=0; i<k; i++) {
sum += a[i];
}
max = sum;
for (i=k; i<n; i++) {
sum = sum + a[i] - a[i-k];
if (sum > max) {
max = sum;
}
}
cout << max;
return 0;
}
- vertor를 사용해 동적으로 n길이의 온도배열을 a를 구성
- 첫번째 k길이의 온도합만 구해놓으면, 그 다음부터는 처음값(a[i-k])을 빼고 새로운값(a[i])를 더하면 간단하게 그 다음 k길이의 온도합을 구할 수 있다.
- max를 지정하고 비교하다가 최종적인 max값을 출력한다.
- 오랜만에 C++을 사용하고, 오랜만에 알고리즘 문제를 풀었더니 간단한 문제에서도 많이 헤맸다. 앞으로는 꾸준히 연습해서 감을 잃지않도록 해야겠다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] N!의 표현법 (feat. 소인수분해) (by. C++) (0) | 2021.01.14 |
---|---|
[알고리즘 연습] 석차 구하기 (by C++) (0) | 2021.01.13 |
[알고리즘 연습] 요세푸스 문제 (0) | 2020.08.23 |
[알고리즘 연습] 두 부분집합의 균형 맞추기 (1) | 2020.08.07 |
[알고리즘 연습] 멱집합 (0) | 2020.08.07 |