모든 경우의수를 알아야 하기 때문에 dfs로 풀었다.
import java.util.Scanner;
public class Main {
static int min = Integer.MAX_VALUE;
static int max = Integer.MIN_VALUE;
static int n;
static int[] op;
static int[] arr;
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
n = scan.nextInt();
arr = new int[n];
op = new int[4];
//+ - * /
for(int i = 0; i<n ;i++) {
arr[i] = scan.nextInt();
}
for(int i = 0; i<4; i++) {
op[i] = scan.nextInt();
}
dfs(1, 0, 0, 0, 0, arr[0]);
System.out.println(max);
System.out.println(min);
}
public static void dfs(int index, int p, int m, int mul, int div, int value) {
if(index > n-1) {
if(value > max)
max = value;
if(value < min)
min = value;
return;
}
if(p < op[0]) {
dfs(index+1, p+1, m, mul, div, value+arr[index]);
}
if(m < op[1]) {
dfs(index+1, p, m+1, mul, div, value-arr[index]);
}
if(mul < op[2]) {
dfs(index+1, p, m, mul+1, div, value*arr[index]);
}
if(div < op[3]) {
dfs(index+1, p, m, mul, div+1, value/arr[index]);
}
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[BaekJoon] 14892 백준 톱니바퀴 (0) | 2020.05.31 |
---|---|
[BaekJoon] 백준 14890 경사로 (0) | 2020.05.30 |
[BaekJoon] 백준 14503 로봇청소기 - Java (0) | 2020.05.25 |
[BaekJoon] 백준 14501 퇴사 - Java (0) | 2020.05.21 |
[BaekJoon] 백준 14499 주사위 굴리기 - Java (0) | 2020.05.19 |