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

위와 동일한 문제입니다.