💻 문제 풀이 : C++
#include <iostream>
#include <vector>
using namespace std;
vector<int> numbers;
int chosen[12];
int oper[4];
int maxAns = -2134567890;
int minAns = 2134567890;
int getNum(int size)
{
int result = numbers[0];
for (int i = 1; i < size; i++)
{
if (chosen[i-1] == 0)
result += numbers[i];
else if (chosen[i-1] == 1)
result -= numbers[i];
else if (chosen[i-1] == 2)
result *= numbers[i];
else if (chosen[i-1] == 3)
result /= numbers[i];
}
return result;
}
void DFS(int level, int depth)
{
if (level == depth)
{
int now = getNum(depth + 1);
if (now > maxAns) maxAns = now;
if (now < minAns) minAns = now;
}
for (int i = 0; i < 4; i++)
{
if (oper[i] == 0) continue;
oper[i]--;
chosen[level] = i;
DFS(level + 1, depth);
oper[i]++;
//oper[i]++;
}
}
int main()
{
int N;
cin >> N;
for (int i = 0; i < N; i++)
{
int num;
cin >> num;
numbers.push_back(num);
}
for (int i = 0; i < 4; i++)
cin >> oper[i];
DFS(0, N-1);
cout << maxAns << endl << minAns;
return 0;
}