코딩테스트/백준

[Java] 백준 14888 : 연산자 끼워넣기

플래시🦥 2023. 2. 7.
반응형
https://www.acmicpc.net/problem/14888
 

14888번: 연산자 끼워넣기

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

www.acmicpc.net

 


import java.util.*;


public class Main {
	
	static int N,max=Integer.MIN_VALUE,min=Integer.MAX_VALUE;
	static int[] num,oper;
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		N = sc.nextInt();	//수의 개수 
		num= new int[N];
		oper= new int[4];	//+-*/
		
		
		for(int i=0;i<N;i++) {
			num[i]=sc.nextInt();
		}
		for(int i=0;i<4;i++) {
			oper[i]=sc.nextInt();
		}
		
		f(num[0],1);
		
		System.out.println(max);
		System.out.println(min);
		
	}// main()
	
	static void f(int n,int k) {
		if(k==N) {
			max=Math.max(max, n);
			min=Math.min(min, n);
			return;
		}
		
		for(int i=0;i<4;i++) {
			if(oper[i]>0) {
				oper[i]--;
				
				switch(i) {
				case 0: f(n+num[k],k+1); break;
				case 1: f(n-num[k],k+1); break;
				case 2: f(n*num[k],k+1); break;
				case 3: f(n/num[k],k+1); break;
				}
				
				oper[i]++;
			}
		}
		
		
	}//f()
	 
}// class Main
728x90
반응형

댓글