티스토리 뷰
문제

입력 및 출력

풀이
import java.io.*;
import java.util.*;
class Main {
public static int N;
public static int[] array;
public static int[] operator;
public static int MAX = Integer.MIN_VALUE;
public static int MIN = Integer.MAX_VALUE;
public static void main(String args[]) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// N
N = Integer.parseInt(br.readLine());
// 값을 담을 배열
array = new int[N];
String[] temp = br.readLine().split(" ");
for (int i = 0; i < N; i++) {
array[i] = Integer.parseInt(temp[i]);
}
// 연산자를 담을 배열
operator = new int[4];
String[] temp2 = br.readLine().split(" ");
for (int i = 0; i < 4; i++) {
operator[i] = Integer.parseInt(temp2[i]);
}
// DFS함수 호출
DFS(array[0], 1);
// 결과 값 출력
System.out.println(MAX);
System.out.println(MIN);
}
public static void DFS(int number, int index) {
// 인덱스가 연산자의 개수와 일치할 경우 최댓값과 최솟값을 설정
if (index == N) {
MAX = Math.max(MAX, number);
MIN = Math.min(MIN, number);
}
for (int i = 0; i < 4; i++) {
// 연산자의 개수가 1이상일 경우
if (operator[i] > 0) {
operator[i]--;
// 값 계산
switch (i) {
case 0:
DFS(number + array[index], index + 1);
break;
case 1:
DFS(number - array[index], index + 1);
break;
case 2:
DFS(number * array[index], index + 1);
break;
case 3:
DFS(number / array[index], index + 1);
break;
}
// 다른 값을 계산하기 위해 다시 증가
operator[i]++;
}
}
}
}
결과 및 해결방안
[결과]
[해결방안]
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[1743/Java] 음식물 피하기 (0) | 2022.01.05 |
---|---|
[1141/Java] 접두사 (0) | 2021.12.31 |
[2504/Java] 괄호의 값 (0) | 2021.12.30 |
[3085/Java] 사탕 게임 (0) | 2021.12.30 |
[1789/Java] 수들의 합 (0) | 2021.12.20 |