공부기록/백준

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

메델 2023. 12. 18. 00:43
import java.util.Scanner;

public class Main {
	static int N;
	static int[] nums, operators;
	static int max, min;
	static StringBuilder sb = new StringBuilder();
	
	public static int calculator(int operand1,int operator, int operand2) {
		if(operator == 1) {
			return operand1 + operand2;
		}else if(operator == 2) {
			return operand1 - operand2;
		}else if(operator == 3) {
			return operand1 * operand2;
		}else {
			return operand1 / operand2;
		}
	}
	
	
	public static void rec_func(int k, int value) {
		if(k == N) {
			max = Math.max(max, value);
			min = Math.min(min, value);
		}else {
			
			for(int i=1; i<5; i++) {
				if(operators[i]>=1) {
					operators[i]--;
					rec_func(k+1, calculator(value, i, nums[k+1]) );
					operators[i]++;
				}
			}
		}
	}
	
	public static void main(String[] args) {
		Scanner kb = new Scanner(System.in);
		
		N = kb.nextInt();
		
		nums = new int[N+1];
		operators = new int[5];
		
		for(int i=1; i<N+1; i++) {
			nums[i] = kb.nextInt();
		}
		
		for(int i=1; i<5; i++) {
			operators[i] = kb.nextInt();
		}
		
		max = Integer.MIN_VALUE;
		min = Integer.MAX_VALUE;
		
		rec_func(1, nums[1]);
		sb.append(max).append('\n').append(min);
		System.out.println(sb);

		
	}
}

'공부기록 > 백준' 카테고리의 다른 글

[백준] 10813번 공 바꾸기  (1) 2023.12.19
[백준] 2798번 블랙잭  (1) 2023.12.19
[백준] 1475번 방 번호  (0) 2023.12.17
[백준] 5800번 성적 통계  (0) 2023.12.17
[백준] 2023번 수들의 합 2  (0) 2023.12.15