package algorithm;
import java.util.Scanner;
public class Main {
public static int MAX = Integer.MIN_VALUE; //최댓값
public static int MIN = Integer.MAX_VALUE; //최솟값
public static int N; //숫자 갯수
public static int[] number; //숫자
public static int[] operator = new int[4]; //연산자 개수
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
N = in.nextInt();
number = new int[N];
//숫자 입력
for(int i=0;i<N;i++) {
number[i] = in.nextInt();
}
//연산자 입력
for(int i=0;i<4;i++) {
operator[i] = in.nextInt();
}
dfs(number[0], 1);
System.out.println(MAX);
System.out.println(MIN);
}
public static void dfs(int num, int idx) {
if(idx == N) {
MAX = Math.max(MAX, num);
MIN = Math.min(MIN, num);
return;
}
for(int i=0;i<4;i++) {
if(operator[i] > 0 ) {
operator[i]--;
switch(i) {
case 0 : dfs(num + number[idx], idx+1); break;
case 1 : dfs(num - number[idx], idx+1); break;
case 2 : dfs(num * number[idx], idx+1); break;
case 3 : dfs(num / number[idx], idx+1); break;
}
operator[i]++;
}
}
}
}
'알고리즘' 카테고리의 다른 글
알고리즘 회고록 1) 직사각형 좌표 구하기(카카오) (0) | 2021.08.22 |
---|---|
[프로그래머스] 카카오 2020 인턴십 키패드 누르기 java (0) | 2021.01.02 |
백준 17070번 : 파이프 옮기기 1 JAVA code (0) | 2020.01.28 |
삽입, 선택, 버블 정렬 (0) | 2017.06.15 |
소수 구하기(에라토스테네스의 체 알고리즘) (0) | 2017.05.19 |