-
[java] 백준 14888 : 연산자 끼워넣기알고리즘 2023. 4. 18. 10:27
문제
https://www.acmicpc.net/problem/14888
14888번: 연산자 끼워넣기
첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수,
www.acmicpc.net
코드
package main; import java.util.*; public class Main { static int max=Integer.MIN_VALUE; static int min=Integer.MAX_VALUE; static int n; static int[] op; static int[] numbers; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); numbers = new int[n]; for(int i=0; i<n ;i++) { numbers[i]= sc.nextInt(); } op = new int[4]; for(int i=0; i<4 ;i++) { op[i]= sc.nextInt(); } DFS(numbers[0],1); System.out.println(max); System.out.println(min); } static void DFS(int number, int idx) { if(idx==n) { max = Math.max(number, max); min = Math.min(number, min); } for(int i=0; i<4; i++) { if(op[i]>0) { op[i]--; if(i==0) { DFS(number+numbers[idx],idx+1); } else if(i==1) { DFS(number-numbers[idx],idx+1); } else if(i==2) { DFS(number*numbers[idx],idx+1); } else if(i==3) { DFS(number/numbers[idx],idx+1); } op[i]++; } } } }
참고
'알고리즘' 카테고리의 다른 글
[java] 백준 2606 : 바이러스 (0) 2023.04.30 [java] 백준 1260 : DFS와 BFS (0) 2023.04.27 [java] 백준 18352 : 특정 거리의 도시찾기 (0) 2023.04.17 [java] LeetCode 234. Palindrome Linked List (0) 2023.04.12 [java] 1021: 회전하는 큐 (0) 2023.04.11