코테준비 - Different Ways to Add Parentheses

정상화·2023년 3월 5일

LeetCode

목록 보기
211/222

Different Ways to Add Parentheses

class Solution {
public:
    vector<int> diffWaysToCompute(string expression) {

        vector<int> results;

        bool isNumber = true;

        for (int i = 0; i < expression.length(); i++) {
            if (isOp(expression.at(i))) {
                isNumber = false;
                vector<int> left = diffWaysToCompute(expression.substr(0, i));
                vector<int> right = diffWaysToCompute(expression.substr(i + 1, expression.length()));

                for (auto lVal: left) {
                    for (auto rVal: right) {
                        results.push_back(calc(lVal, expression.at(i), rVal));
                    }
                }
            }
        }
        if (isNumber) {
            results.push_back(stoi(expression));
        }

        return results;
    }

    bool isOp(char letter){
        return letter == '+' || letter == '-' || letter == '*';
    }

    int calc(int left, char op, int right){
        switch (op) {
            case '+':
                return left + right;
            case '-':
                return left - right;
            case '*':
                return left * right;
            default:
                return -1;
        }
    }
};
profile
백엔드 희망

0개의 댓글