ALGORITHM/Inflearn

자료구조(스택) - 4. 후위식 연산

Harimad 2022. 3. 3. 12:13

문제

후위연산식 결과 출력 함수를 만드시오.
후위식 352+*9- 는 3*(5+2)-9로 계산되어 12가 된다.

입력설명
첫 줄에 후위연산식이 주어진다.
연산식의 길이는 50을 넘지 않는다.
식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.

 

 

풀이

1. 스택을 담을 배열을 생성한다.

2. 문자열을 반복순회하며 숫자는 스택에 push한다.

3. 연산자는 스택의 숫자 2개를 꺼내어 계산후 결과값을 stack에 push한다.

4. 반복문을 마치면, 마지막으로 남은 stack의 요소를 return 해준다.

 

 

코드

function solution(s){
	let stack = [];
	for (let x of s) {
		if (x === '+' || x === '-' || x === '*' || x === '/') {
			stack.push(calc(stack, x));
			continue;
		}
		stack.push(x);
	}
	return stack[0];

function calc(stack, opertaor) {
	let num1 = parseInt(stack.pop());
	let num2 = parseInt(stack.pop());
	switch (opertaor) {
		case '+': return num2 + num1;
		case '-': return num2 - num1;
		case '*': return num2 * num1;
		case '/': return num2 / num1;
	}
}

let str="352+*9-"; // 3 * (5 + 2) - 9
console.log(solution(str)); //12

 

 

 

출처

 

자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의

자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., - 강의

www.inflearn.com