자바스크립트에서 스택을 사용하여 RPN(역 폴란드어 표기법) 입력 방식으로 계산기를 만들어야 합니다.
다음 입력 배열을 고려하십시오 -
const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];
프로세스 -
-
1은 피연산자이며 스택에 푸시합니다.
-
5는 피연산자이며 스택에 푸시합니다.
-
'+'는 연산자로 1과 5를 팝하여 계산하고 결과를 Stack에 푸시합니다.
-
6은 피연산자이며 스택에 푸시합니다.
-
3은 피연산자이며 스택에 푸시합니다.
-
'−'는 연산자이며 6과 3을 뺀 후 결과를 스택에 푸시합니다.
-
'/'는 6과 3을 팝한 연산자로 이들을 나누고 결과를 스택에 푸시합니다.
-
7은 피연산자이며 스택으로 푸시합니다.
-
'*'는 연산자로 2와 7을 팝하고 곱하고 결과를 스택에 푸시합니다.
마지막으로 출력은 -
여야 합니다.const output = 14;
예시
이에 대한 코드는 -
const arr = [1, 5, '+', 6, 3, '−', '/', 7, '*'];
const stackCalculator = (arr = []) => {
const options = {
'+': (a, b) => a + b,
'−': (a, b) => a - b,
'*': (a, b) => a * b,
'/': (a, b) => a / b
};
const stack = [];
arr.forEach(value => {
stack.push(value in options
? options[value](...stack.splice(-2))
: value
);
});
return stack;
};
console.log(stackCalculator(arr)); 출력
콘솔의 출력은 -
[14]