Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 14888. 연산자 끼워넣기 본문

acmicpc

[BAEKJOON] 14888. 연산자 끼워넣기

코드와이 2021. 4. 4. 18:37

 

백트래킹

문제링크

www.acmicpc.net/problem/14888

 

14888번: 연산자 끼워넣기

첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 

www.acmicpc.net

 

package acmicpc.Silver1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 연산자_끼워넣기 {

	static int n, ansMax, ansMin;
	static int[] arr, op;
	static boolean[] checked;
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		
		n = Integer.parseInt(br.readLine());
		st = new StringTokenizer(br.readLine());
		
		arr = new int[n];				// input 숫자
		checked = new boolean[n];
		for(int i = 0 ; i < n ; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		st = new StringTokenizer(br.readLine());
		op = new int[4];				// 연산자 갯수
		for(int i = 0 ; i < 4 ; i++) {
			op[i] = Integer.parseInt(st.nextToken());
		}
		
		ansMax = Integer.MIN_VALUE;
		ansMin = Integer.MAX_VALUE;
		
		go(1, arr[0]);
		
		System.out.println(ansMax + "\n" + ansMin);
	}
	
	public static void go(int idx, int sum) {
		
		if(idx == n) {
			
			ansMax = Math.max(ansMax, sum);
			ansMin = Math.min(ansMin, sum);
			return;
		}
		
		int num = arr[idx];
		// 연산 가능한 operation
		for(int j = 0 ; j < 4 ; j++) {
			if(op[j] > 0) {
				op[j]--;
				go(idx+1, operation(sum, num, j));
				op[j]++;
			}
		}
		
	}

	private static int operation(int sum, int num, int i) {
		
		switch (i) {
		
		case 0:				// 덧셈
			sum += num;
			break;
		case 1:				// 뺄셈
			sum -= num;
			break;
		case 2:				// 곱셈
			sum *= num;
			break;
		case 3:				// 나눗셈
			sum /= num;
			break;
		}
		
		return sum;
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 1005. ACM Craft  (0) 2021.04.05
[BAEKJOON] 2252. 줄 세우기  (0) 2021.04.05
[BAEKJOON] 9663. N-Queen  (0) 2021.04.04
[BAEKJOON] 1759. 암호 만들기  (0) 2021.04.04
[BAEKJOON] 1932. 정수 삼각형  (0) 2021.03.27