728x90
programmers.co.kr/learn/courses/30/lessons/67257
코딩테스트 연습 - 수식 최대화
IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과
programmers.co.kr
정말 다 맞게 한 것 같은데 테스트 3개가 틀려서 뭔가 했더니
answer값 갱신하는 if문 위치가 잘못됐었다..
while문 바로 안에 들어가 있어야하는데 while문 안의 for문안에 들어가 있었다^^..
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
long long cal(long long a, long long b, char op){
if(op == '*'){
return a*b;
}else if(op == '+'){
return a+b;
}else{
return a-b;
}
}
long long solution(string expression) {
long long answer = 0;
vector<long long> nums;
vector<char> op;
long long num = 0;
for(int i = 0 ; i < expression.length() ; i++){
char c = expression[i];
if(c >= '0'&& c <= '9'){
num = num*10 + c-'0';
}else{
op.push_back(c);
nums.push_back(num);
num = 0;
}
}
nums.push_back(num);
vector<char> opp = {'*','+','-'};
do{
vector<char> tmp_op = op;
vector<long long> tmp_nums = nums;
for(int i = 0 ; i < 3 ; i++){
for(int j = 0 ; j < tmp_op.size() ; j++){
if(tmp_op[j] == opp[i]){
tmp_nums[j] = cal(tmp_nums[j],tmp_nums[j+1],tmp_op[j]);
tmp_nums.erase(tmp_nums.begin()+j+1);
tmp_op.erase(tmp_op.begin()+j);
j--;
}
}
}
if(answer < abs(tmp_nums[0])){
answer = abs(tmp_nums[0]);
}
}while(next_permutation(opp.begin(), opp.end()));
return answer;
}
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[백준 11066] 알고리즘 94일차 : 파일 합치기 (0) | 2021.06.28 |
---|---|
[프로그래머스] 튜플 (0) | 2021.05.07 |
[백준 1475] 알고리즘 93일차 : 방 번호 (2) | 2021.02.26 |
[백준 1158] 알고리즘 92일차 : 요세푸스 문제 (0) | 2021.02.25 |
[백준 13305] 알고리즘 91일차 : 주유소 (0) | 2021.02.24 |