#include <iostream>
using namespace std;
#define OPERATOR_COUNT 4
int n;
int arr_operand[1000]; // 수열
int arr_operator[OPERATOR_COUNT];
int min_val = INT_MAX;
int max_val = INT_MIN;
void DFS(int result, int idx)
{
if (idx == n)
{
if (result > max_val)
max_val = result;
if (result < min_val)
min_val = result;
return;
}
for (int i = 0; i < OPERATOR_COUNT; i++)
{
if (arr_operator[i] > 0)
{
arr_operator[i]--;
int arr_val[]
{
result + arr_operand[idx],
result - arr_operand[idx],
result * arr_operand[idx],
result / arr_operand[idx]
};
DFS(arr_val[i], idx + 1);
arr_operator[i]++;
}
}
return;
}
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
cin >> arr_operand[i];
for (int i = 0; i < OPERATOR_COUNT; i++)
cin >> arr_operator[i];
DFS(arr_operand[0], 1);
cout << max_val << '\n';
cout << min_val;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[플5] 16496 - 큰 수 만들기 (0) | 2022.07.01 |
---|---|
[실1] 2583 - 영역 구하기 bfs (0) | 2022.07.01 |
[실1] 11403 - 경로 찾기 (0) | 2022.06.21 |
[실1] 11286 - 절대값 힙 (0) | 2022.06.21 |
[실1] 1991 - 트리 순회 (0) | 2022.06.20 |