반응형
Notice
Recent Posts
Recent Comments
«   2024/09   »
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
29 30
Archives
관리 메뉴

Easy-So-Easy

[백준] 14888번 연산자 끼워넣기 성공 - C/C++ 본문

BaekJoon

[백준] 14888번 연산자 끼워넣기 성공 - C/C++

섭_민 2023. 6. 24. 14:08
반응형

백준 1259 문제(Problem)

백준 14888 문제

풀이(Solution)

이 문제는 재귀 함수의 사용 방법만 알면 간단하게 구현이 가능하다. 연산자를 넣어줄 배열 op를 선언하여 덧셈, 뺄셈, 곱셈, 나눗셈의 개수를 각각 넣어주었다. 그리고 사용 개수가 남아 있으면 연산을 실행하며 모든 연산을 하였을 때 최솟값, 최댓값을 계속해서 갱신해주면 되는 문제이다. 

전체 코드(Code)

#include<iostream>
#include<algorithm>
#include<limits.h>
using namespace std;
int N, A[101], op[4], res_min=INT_MAX, res_max=INT_MIN;

int check(int pos, int i, int v) {
  if(pos==0) return v+arr[i];  // + 덧셈
  if(pos==1) return v-arr[i];  // - 뺄센
  if(pos==2) return v*arr[i];  // * 곱셈
  return v/arr[i];  // / 나눗셈
}

void func(int depth, int sum) {
  if(depth == N) {  // 모든 연산이 끝났을 때
    res_min = min(res_min, sum);
    res_max = max(res_max, sum);
    return;
  }

  for(int i=0; i<4; i++) {
    if(op[i]>0) {
      op[i]--;
      func(depth+1, check(i, depth, sum));
      op[i]++;
    }
  }
}

int main() {
  cin >> N;
  for(int i=0; i<N; i++) cin >> A[i];
  for(int i=0; i<4; i++) cin >> op[i];

  func(1, A[0]);
  cout << res_max << '\n' << res_min;
}
반응형