자바스크립트에서 스택을 사용하여 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]