본문 바로가기
알고리즘 & 자료구조/백준

백준 14888

by 신재권 2022. 5. 19.

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

//연산자 끼워넣기
//https://www.acmicpc.net/problem/14888
public class Main14888 {

   static int N, max, min;
   static int[] nums, operators, order;
   static StringBuilder sb = new StringBuilder();

   static int calculator() {
      int value = nums[1];
      for (int i = 1; i <= N - 1; i++) {
         if (order[i] == 1) {
            value += nums[i + 1];
         } else if (order[i] == 2) {
            value -= nums[i + 1];
         } else if (order[i] == 3) {
            value *= nums[i + 1];
         } else if (order[i] == 4) {
            value /= nums[i + 1];
         }
      }
      return value;
   }

   static void rec_func(int k) {
      if (k == N) {
         int value = calculator();
         max = Math.max(max, value);
         min = Math.min(min, value);
      } else {

         for (int cand = 1; cand <= 4; cand++) {
            if (operators[cand] >= 1) {
               operators[cand]--;
               order[k] = cand;
               rec_func(k + 1);
               operators[cand]++;
               order[k] = 0;
            }
         }
      }
   }

   public static void main(String[] args) throws Exception {
      input();
      rec_func(1);
      sb.append(max).append("\n").append(min);
      System.out.println(sb);
   }

   private static void input() throws IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      N = Integer.parseInt(br.readLine());
      nums = new int[N + 1];
      operators = new int[5];
      order = new int[N + 1];
      StringTokenizer st = new StringTokenizer(br.readLine());
      for (int i = 1; i <= N; i++) {
         nums[i] = Integer.parseInt(st.nextToken());
      }
      st = new StringTokenizer(br.readLine());
      for (int i = 1; i < 5; i++) {
         operators[i] = Integer.parseInt(st.nextToken());
      }
      max = Integer.MIN_VALUE;
      min = Integer.MAX_VALUE;
   }

}

'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글

백준 2667  (0) 2022.06.05
백준 9663  (0) 2022.05.22
백준 15650  (0) 2022.05.19
백준 1780  (0) 2022.04.12
백준 17829  (0) 2022.04.11