Skip to content

Commit 5bf4a12

Browse files
authored
Merge pull request VSFe#4 from bn-tw2020/NTW
프로그래머스 수식최대화
2 parents d8fe8cf + 371acac commit 5bf4a12

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

NTW/수식 최대화.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
long long solution(string expression) {
5+
long long answer = 0;
6+
vector<long long> num;
7+
vector<char> exp, location;
8+
string n = "";
9+
10+
for(int i = 0; i < expression.size(); i++)
11+
{
12+
if(expression[i] == '+' || expression[i] == '-' || expression[i] == '*')
13+
{
14+
num.push_back(stoi(n));
15+
n = "";
16+
if(find(exp.begin(), exp.end(), expression[i]) == exp.end())
17+
exp.push_back(expression[i]);
18+
location.push_back(expression[i]);
19+
}
20+
else
21+
n += expression[i];
22+
}
23+
24+
num.push_back(stoi(n));
25+
sort(exp.begin(), exp.end());
26+
27+
do
28+
{
29+
vector<long long> tmp_num = num;
30+
vector<char> tmp_loc = location;
31+
32+
for(int i = 0; i < exp.size(); i++) {
33+
for(int j = 0; j < tmp_loc.size(); j++) {
34+
if(exp[i] == tmp_loc[j]) {
35+
if(tmp_loc[j] == '+')
36+
tmp_num[j] = tmp_num[j] + tmp_num[j + 1];
37+
else if(tmp_loc[j] == '-')
38+
tmp_num[j] = tmp_num[j] - tmp_num[j + 1];
39+
else if(tmp_loc[j] == '*')
40+
tmp_num[j] = tmp_num[j] * tmp_num[j + 1];
41+
42+
tmp_num.erase(tmp_num.begin() + j + 1);
43+
tmp_loc.erase(tmp_loc.begin() + j);
44+
j--;
45+
}
46+
}
47+
}
48+
49+
if(answer < abs(tmp_num[0]))
50+
answer = abs(tmp_num[0]);
51+
} while(next_permutation(exp.begin(), exp.end()));
52+
53+
return answer;
54+
}

0 commit comments

Comments
 (0)