문제
후위연산식이 주어지면 연산한 결과를 출력. 만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12
첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다. 식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.
풀이
function solution(s) {
let answer;
let lt, rt;
const stack = [];
for (x of s) {
if (!isNaN(x)) stack.push(Number(x));
else {
rt = stack.pop();
lt = stack.pop();
if (x === "+") stack.push(lt + rt);
else if (x === "-") stack.push(lt - rt);
else if (x === "*") stack.push(lt * rt);
else if (x === "/") stack.push(lt / rt);
}
}
answer = stack[0];
return answer;
}
let str = "352+*9-";
console.log(solution(str));
숫자를 만나면 stack에 push
연산자를 만나면, 스택에서 두개를 pop하는데 첫번째 나오는걸 rt, 두번째 나오는걸 lt로 지정한다.
연산을 진행하고, 결과값을 stack에 push한다.
이 과정을 반복하면 마지막에는 결과값만 남게된다.
'코딩테스트 문제풀이 > inflearn' 카테고리의 다른 글
[인프런] Node.js / 섹션6-자료구조(큐) / 6. 공주 구하기 (0) | 2023.02.10 |
---|---|
[인프런] Node.js / 섹션6-자료구조(스택) / 5. 쇠막대기 (0) | 2023.02.10 |
[인프런] Node.js / 섹션6-자료구조(스택) / 3. 크레인 인형뽑기(카카오 기출) (0) | 2023.02.10 |
[인프런] Node.js / 섹션6-자료구조(스택) / 2. 괄호문자제거 (0) | 2023.02.08 |
[인프런] Node.js / 섹션6-자료구조(스택) / 1. 올바른 괄호 (0) | 2023.02.08 |