[Brute Force] 14888번 - 연산자 끼워넣기

안수진·2024년 5월 10일

Baekjoon

목록 보기
15/55
post-thumbnail

[백준] 14888번 - 연산자 끼워넣기

📝 나의 풀이

숫자와 연산자를 담아둘 배열을 선언하고
Math.max, Math.min을 활용해 각 연산의 최댓값과 최솟값을 구하면 된다.

그리고 완전탐색을 하면서
연산자의 배열에서 해당 인덱스의 연산자가 존재하면
값을 1로 감소시키고 0이 된다면 다음 연산자로 넘어가도록 한다.

👩🏻‍💻 최종 코드

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

public class Main {
	
	static int N;
	static int[] number;
	static int[] operator;
	static int answerMax = Integer.MIN_VALUE;
	static int answerMin = Integer.MAX_VALUE;
	
	public static void dfs(int sum, int idx) {
		if(idx == N) {
			answerMax = Math.max(sum, answerMax);
			answerMin = Math.min(sum, answerMin);
		}
		
		for(int i = 0; i < operator.length; i++) {
			if(operator[i] > 0) {
				
				operator[i]--;
				switch(i) {
				case 0: dfs(sum + number[idx], idx + 1); break;
				case 1: dfs(sum - number[idx], idx + 1); break;
				case 2: dfs(sum * number[idx], idx + 1); break;
				case 3: dfs(sum / number[idx], idx + 1); break;
				}
				operator[i]++;
			}
		}
		
	}

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		number = new int[N];
		operator = new int[4];
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		for(int i = 0; i < N; i++) {
			number[i] = Integer.parseInt(st.nextToken());
		}
		
		st = new StringTokenizer(br.readLine());
		for(int i = 0; i < 4; i++) {
			operator[i] = Integer.parseInt(st.nextToken());
		}
		
		dfs(number[0], 1);
		System.out.println(answerMax);
		System.out.println(answerMin);

		
	}

}
profile
항상 궁금해하기

0개의 댓글