목차

     

     


     

     

    [백준 14888번 C/C++] 연산자 끼워넣기

     

    https://www.acmicpc.net/problem/14888

     

    14888번: 연산자 끼워넣기

    첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 

    www.acmicpc.net


     

     

    해결전략

     

     

     

     

     

     


     

    코드

     

    #include <stdio.h>
    using namespace std;
    
    int n;  
    int max=-1000000001;
    int min=1000000001;
    int a[101], oper[4];
    
    void DFS(int L, int result)
    {
    	if(L==n)
    	{
    		if (result > max) max = result;
    		if (result < min) min = result;
    		return;
    	}
    	
    	for(int i=0; i<4; i++)
    	{
    		if(oper[i] > 0 )
    		{
    			oper[i]--;
    			if(i==0) DFS(L+1, result+a[L]);
    			else if(i==1) DFS(L+1, result-a[L]);
    			else if(i==2) DFS(L+1, result*a[L]);
    			else if(i==3) DFS(L+1, result/a[L]);
    			oper[i]++;
    		}
    	}
    }
    
    int main() {
    	freopen("input.txt", "rt", stdin);	
    	scanf("%d", &n);
    	
    	for(int i=0; i<n; i++){
    		scanf("%d", &a[i]);
    	}
    	for(int i=0; i<4; i++){
    		scanf("%d", &oper[i]);
    	}
    	
    	DFS(1, a[0]);
    	
    	printf("%d\n", max);
    	printf("%d\n", min);
    
    	return 0;
    }