본문 바로가기

백준/C++

[Baekjoon/C++] 32089번 - 部員の変遷

[백준] Baekjoon Online Judge

문제로 이동

 

문제

春は別れと出会いの季節.今年もまた,伝統ある芸楽部の歴史に新たな名前を刻むときが来た.

部活日誌には,この部活の n 年分の部員の推移が記録されている.記録によれば,初年度より前の部員数はもちろん 0 人であり,毎年部員は 4 月に新入生のみが入部しており,3 年後の 3 月に卒業するタイミングでのみ退部しているようだ.

部の変遷を紐解くために,n 年間の各年の新入部員の数のデータから在籍する部員の数が最大になった年度の部員数を調べてみよう.

 

입력

入力は複数のデータセットからなる.データセットの個数は 50 を超えない.各データセットは次の形式で表される.

n a1 a2  an

n は新入部員の数が記録されている年数を表す,3 以上 1000 以下の整数である.続く行は各年度の新入部員の数を表す n 個の整数からなり,i 年目の新入部員の数 ai はそれぞれ 0 ≤ ai ≤ 108 を満たす.

入力の終わりは,ゼロ 1 つだけからなる行で表される.

 

출력

各データセットについて,在籍する部員の数が最大になった年度の部員数を 1 行に出力せよ.

 


풀이

#include <iostream>
using namespace std;

int arr[1001];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    while (true) {
        int n;
        cin >> n;

        if (n == 0) break;

        int result = 0;
        for (int i = 0; i < n; i++) {
            cin >> arr[i];

            if (i >= 2) result = max(result, arr[i] + arr[i - 1] + arr[i - 2]);
        }

        cout << result << '\n';
    }

    return 0;
}

 연속 3개 숫자의 합이 가장 큰 것을 출력하면 된다.