
😎풀이
expression
순회
1-1. 연산자 인 경우 연산자를 기준으로 좌측과 우측을 나누어 재귀실행
1-2. 숫자가 된 결괏값을 2중 순회하며 연산자에 맞는 결과를 result
에 입력함
1-3. 만약 연산자 없이 표현식에 숫자만 있을 경우 형변환 하여 result
에 입력
- 입력된
result
요소 반환
function diffWaysToCompute(expression: string): number[] {
const result: number[] = [];
let isNumber = true;
for (let i = 0; i < expression.length; i++) {
const char = expression[i];
if (char === '+' || char === '-' || char === '*') {
const leftResults = diffWaysToCompute(expression.slice(0, i));
const rightResults = diffWaysToCompute(expression.slice(i + 1));
for (const left of leftResults) {
for (const right of rightResults) {
if (char === '+') result.push(left + right);
else if (char === '-') result.push(left - right);
else if (char === '*') result.push(left * right);
}
}
}
}
if (result.length === 0) {
result.push(Number(expression));
}
return result;
}