Algorithm 🧑🏻💻/백준(BOJ)
[백준,c++] 15658번 - 연산자 끼워넣기 (2)
dkswnkk
2022. 8. 23. 22:48
문제
15658번: 연산자 끼워넣기 (2)
첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1보다 크거나 같고, 4N보다 작거나 같은 4개의 정수가 주어지는데, 차례대
www.acmicpc.net
코드
#include <iostream>
#include <vector>
using namespace std;
int N;
int _add, _sub, _mul, _div;
vector<int> v;
int _max = -1e9, _min = 1e9;
void dfs(int add, int sub, int mul, int div, int result, int idx){
if(idx == N){
_max = max(_max, result);
_min = min(_min, result);
return;
}
if(add>0) dfs(add-1, sub, mul, div, result + v[idx], idx +1);
if(sub>0) dfs(add, sub-1, mul, div, result - v[idx], idx +1);
if(mul>0) dfs(add, sub, mul-1, div, result * v[idx], idx +1);
if(div>0) dfs(add, sub, mul, div-1, result / v[idx], idx +1);
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cin>>N;
for(int i=0; i<N; i++){
int inp; cin>>inp;
v.push_back(inp);
}
cin>>_add>>_sub>>_mul>>_div;
dfs(_add, _sub, _mul, _div, v[0], 1);
cout<<_max << ' '<< _min;
}
풀이
[백준,c++] 14888번 - 연산자 끼워넣기
문제 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧
dkswnkk.tistory.com
위와 동일한 문제입니다.