작성일 :

문제 링크

10643번 - FUNGHI

설명

원형으로 배치된 8조각 피자에서 연속한 4조각의 합이 최대가 되는 값을 구하는 문제입니다.


접근법

처음 4조각의 합을 만든 뒤 한 칸씩 이동하며 윈도우 합을 갱신합니다.
마지막 조각 다음은 다시 처음으로 돌아가므로 인덱스는 mod 8로 처리합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;

class Program {
  static void Main() {
    var a = new int[8];
    for (var i = 0; i < 8; i++)
      a[i] = int.Parse(Console.ReadLine()!);

    var sum = 0;
    for (var i = 0; i < 4; i++) sum += a[i];
    var best = sum;

    for (var i = 1; i < 8; i++) {
      sum = sum - a[i - 1] + a[(i + 3) % 8];
      if (sum > best) best = sum;
    }

    Console.WriteLine(best);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;

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

  int a[8];
  for (int i = 0; i < 8; i++)
    cin >> a[i];

  int sum = 0;
  for (int i = 0; i < 4; i++) sum += a[i];
  int best = sum;

  for (int i = 1; i < 8; i++) {
    sum = sum - a[i - 1] + a[(i + 3) % 8];
    if (sum > best) best = sum;
  }

  cout << best << "\n";

  return 0;
}