반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

undefined

[백준] 후위 표기식2 1935번 - Javascript / Node.js 본문

Coding Test

[백준] 후위 표기식2 1935번 - Javascript / Node.js

JavaScripter 2022. 9. 8. 17:35
반응형

문제 설명


문제 풀이

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];
let count = 0;
let expression = '';

rl.on('line', function (line) {
  if (!count) {
  } else if (count === 1) {
    expression = line;
  } else {
    input.push(+line);
  }
  count++;
}).on('close', function () {
  solution(input);
  process.exit();
});

const solution = input => {
  const stack = [];
  const exp = expression.split('').map(e => {
    if (e.charCodeAt(0) > 64 && e.charCodeAt(0) < 91) {
      return (e = input[e.charCodeAt(0) - 65]);
    }
    return e;
  });

  exp.forEach((v, i) => {
    if (!isNaN(v)) {
      stack.push(v);
    } else {
      const one = +stack.pop();
      const two = +stack.pop();
      const ele = eval(two + v + one);
      stack.push(ele);
    }
  });
  console.log(stack[0].toFixed(2));
};

 

1. 주어진 식의 알파벳의 코드를 이용하여 주어진 값으로 바꾸기

 

2. 숫자로 변환한 식을 돌면서 숫자라면 stack에 넣는다.

 

3. 숫자가 아니라면 뒤에서 2개를 뽑아서 현재의 요소와 결합하여 식완성 => eval로 계산

 

4. 완성된 값을 다시 stack에 넣고 반복

 

5. toFixed(2) 활용하여 소수점 2자리까지 표현

 


배운 점

반응형
Comments