𝓡𝓸𝓸𝓶𝟣: 𝒜𝓁𝑔𝑜𝓇𝒾𝓉𝒽𝓂/알고리즘 문제 풀이

BOJ17127 : 벚꽃이 정보섬에 피어난 이유 (Bronze 1)

연혜슬 2021. 8. 11. 01:28

#include <iostream>
using namespace std;

int N;
int A[10];

int sum(int a, int b, int c);
int main()
{
    int max = 0;
    int count = 0;
    cin >> N;
    for (int i = 0; i < N; i++)
        cin >> A[i];
    for (int i = 1; i < N - 2; i++)
    {
        for (int j = i + 1; j < N - 1; j++)
        {
            for (int k = j + 1; k < N; k++)
            {
                int tmp = sum(i, j, k);
                if (max < tmp)
                    max = tmp;
            }
        }
    }
    cout << max;
}

int sum(int a, int b, int c)
{
    int sum1 = 1, sum2 = 1, sum3 = 1, sum4 = 1;

    for (int i = 0; i < a; i++)
    {
        sum1 *= A[i];
    }
    for (int i = a; i < b; i++)
    {
        sum2 *= A[i];
    }
    for (int i = b; i < c; i++)
    {
        sum3 *= A[i];
    }
    for (int i = c; i < N; i++)
    {
        sum4 *= A[i];
    }
    return sum1 + sum2 + sum3 + sum4;
}

i, j, k는 4개의 범위를 나눠주는 구분자들이다. 구분 가능한 모든 경우의 수를 돌면서 sum값을 구해서 최댓값을 출력하는 간단한 문제였다! 

 

(특이사항 : 1트에 성공함 ㅎㅎ)