반응형
1. 문제
- 역 폴란드 표기법으로 제공되는 문자열 배열의 계산 결과를 반환하라.
2. 해결
function evalRPN(tokens: string[]): number {
const stack = [];
const operator = ['*', '-','+','/'];
for(const token of tokens) {
if(!operator.includes(token)) stack.push(Number(token));
else {
const target1 = stack.pop();
const target2 = stack.pop();
if(token === '+') stack.push(target2 + target1);
else if(token ==='-') stack.push(target2 - target1);
else if(token === '*') stack.push(target2 * target1);
else if(token ==='/') stack.push(Math.trunc(target2 / target1));
}
}
return stack.pop()
};
- 역 폴란드 표기법은 스택을 활용해서 풀 수 있다.
- 피연산자들은 스택에 넣고, 연산자를 만나면 2개씩 꺼내서 계산을 한 뒤, 다시 스택에 넣으면 된다.
- 여기서 포인트는 먼저 꺼낸놈이 2번째 피연산자에 위치해야 한다.