짱아의 개발 기록장

백준 14888번. 연산자 끼워넣기(c++) / String+순열 본문

Algorithm/Baekjoon

백준 14888번. 연산자 끼워넣기(c++) / String+순열

jungahshin 2021. 2. 17. 12:08
반응형

문자열에 순열을 가미한 문제였다.

가장 놓치지 쉬운 부분이 MAX의 초기값 설정에 관한 부분이었는데...

최대값도 음수가 될 수 있다는 점!!!!

그래서 최대값도 0이 아니라 -INT_MAX값으로 초기화 해주어야 한다.

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int n, op;
char oper[4= {'+''-''*''/'};
int num[101= {0, };
vector<int> v;
int MIN = 987654321, MAX = -987654321;
 
int cal(){
    int temp = num[0];
    for(int i=1; i<n; i++){
        char OP = oper[v[i-1]];
        if(OP=='+'){
            temp += num[i];
        }else if(OP=='-'){
            temp -= num[i];
        }else if(OP=='*'){
            temp *= num[i];
        }else{
            temp /= num[i];
        }
    }
 
    return temp;
}
 
int main()
{
    cin>>n;
    for(int i=0; i<n; i++){
        cin>>num[i];
    }
 
    for(int i=0; i<4; i++){
        cin>>op;
        for(int j=0; j<op; j++){
            v.push_back(i);
        }
    }
 
    do{
        int temp = cal();
        MAX = max(MAX, temp);
        MIN = min(MIN, temp);
    }while(next_permutation(v.begin(),v.end()));
 
    cout<<MAX<<"\n";
    cout<<MIN<<"\n";
 
    return 0;
}
cs
반응형
Comments