
😎풀이
- 스택 정의
- 숫자 정의
- 이전 연산자 정의
s
순회
4-1. 숫자라면 자릿수에 맞게 누적
4-2. 문자면서 공백이 아니라면 연산자이므로 각 기호에 맞게 처리 후 스택에 입력 후 숫자만 연산자 및 숫자 업데이트
- 스택에 입력된 숫자 누산 및 반환
function calculate(s: string): number {
let stack: number[] = [];
let num = 0;
let prevOp = '+';
for (let i = 0; i < s.length; i++) {
const char = s[i];
if (char >= '0' && char <= '9') {
num = num * 10 + Number(char);
}
if ((char < '0' && char !== ' ') || i === s.length - 1) {
if (prevOp === '+') {
stack.push(num);
} else if (prevOp === '-') {
stack.push(-num);
} else if (prevOp === '*') {
stack.push(stack.pop()! * num);
} else if (prevOp === '/') {
stack.push(Math.trunc(stack.pop()! / num));
}
prevOp = char;
num = 0;
}
}
return stack.reduce((acc, val) => acc + val, 0);
}