슈콩

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

Algorithms/Baekjoon

[BOJ] 14888 연산자 끼워넣기

shukong 2025. 12. 1. 21:58

 

 

[문제]

https://www.acmicpc.net/problem/14888

 

 

[소스 코드]

import java.io.*;
import java.util.*;

public class Main {
	static int max,min;
	static int[] nums;
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int n = Integer.parseInt(br.readLine());
		st = new StringTokenizer(br.readLine());
		nums = new int[n];
		for(int i=0;i<n;i++) {
			nums[i] = Integer.parseInt(st.nextToken());
		}
		max = Integer.MIN_VALUE;
		min = Integer.MAX_VALUE;
		st = new StringTokenizer(br.readLine());
		int plus = Integer.parseInt(st.nextToken());
		int minus = Integer.parseInt(st.nextToken());
		int multi = Integer.parseInt(st.nextToken());
		int divide = Integer.parseInt(st.nextToken());
		dfs(plus,minus,multi,divide,1,nums[0]);
		System.out.println(max);
		System.out.println(min);
	}
	private static void dfs(int plus,int minus,int multi,int divide,int cnt,int sum) {
		if(plus==0 && minus==0 && multi==0 && divide==0) {
			max = Math.max(max, sum);
			min = Math.min(min, sum);
			return;
		}
		if(plus>0) dfs(plus-1,minus,multi,divide,cnt+1,sum+nums[cnt]);
		if(minus>0) dfs(plus,minus-1,multi,divide,cnt+1,sum-nums[cnt]);
		if(multi>0) dfs(plus,minus,multi-1,divide,cnt+1,sum*nums[cnt]);
		if(divide>0) dfs(plus,minus,multi,divide-1,cnt+1,sum/nums[cnt]);
	}
}

'Algorithms > Baekjoon' 카테고리의 다른 글

[BOJ] 14890 경사로  (0) 2025.12.01
[BOJ] 14889 스타트와 링크  (0) 2025.12.01
[BOJ] 14502 연구소  (0) 2025.12.01
[BOJ] 14501 퇴사  (0) 2025.12.01
[BOJ] 14500 테트로미노  (0) 2025.12.01