[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/알고리즘 연습

[알고리즘 연습] 온도의 최대값 (by C++)

inu 2021. 1. 12. 21:47
반응형

온도의 최대값

  • 매일 일정한 시간에 온도를 측정하여 기록한다고 하자.
  • 정수 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++을 사용하고, 오랜만에 알고리즘 문제를 풀었더니 간단한 문제에서도 많이 헤맸다. 앞으로는 꾸준히 연습해서 감을 잃지않도록 해야겠다.
반응형