개인 공부/코딩테스트
[C++][백준] 14888번 연산자 끼워넣기 :: seoftware
seowit
2020. 4. 23. 20:10

소스코드
#include <iostream>
#include <limits>
using namespace std;
int N;
int arr[11];
int op[4];
int max_result = numeric_limits<int>::min();
int min_result = numeric_limits<int>::max();
void dfs(int tmp, int idx, int cur_op) {
if (cur_op == 0) tmp += arr[idx];
else if (cur_op == 1) tmp -= arr[idx];
else if (cur_op == 2) tmp *= arr[idx];
else tmp /= arr[idx];
if (idx == N - 1) {
if (tmp > max_result) max_result = tmp;
if (tmp < min_result) min_result = tmp;
return;
}
for (int i = 0; i < 4; i++) {
if (op[i]) {
op[i]--;
dfs(tmp, idx + 1, i);
op[i]++;
}
}
}
int main(void) {
cin >> N;
for (int i = 0; i < N; i++) {
cin >> arr[i];
}
cin >> op[0] >> op[1] >> op[2] >> op[3];
for (int i = 0; i < 4; i++) {
if (op[i]) {
int tmp = arr[0];
op[i]--;
dfs(tmp, 1, i);
op[i]++;
}
}
cout << max_result << endl << min_result << endl;
}
정수(integer) 또는 소수(float)의 최대, 최소 값으로 초기화하는 방법 :
#include <limits> , int minimum = std::numeric_limits<int> max();