알고리즘/문제 풀이
[BOJ] 백준 21737 - SMUPC 계산기 (Javascript, 제 1회 SMUPC)
degurii
2021. 5. 12. 02:07
728x90
문제 링크
21737번: SMUPC 계산기
SMUPC를 기념하기 위해 ALGOS와 DSC Sookmyung에서는 SMUPC의 각 글자로 계산이 이루어지는 계산기를 만들었다. 가은이와 혜민이는 이 계산기와 같은 방식으로 작동하는 프로그램을 만들고자 한다. 가은
www.acmicpc.net
풀이
간단한 구현문제입니다. 문자열 파싱은 자바스크립트가 편합니다.
1) 정규표현식으로 수와 연산자를 분리해줍시다.
/[0-9]+/는 연속한 숫자를, /[A-Z]/는 대문자를 뽑습니다.
2) 규칙에 맞게 계산해줍시다.
3) 정답을 출력합니다.
정답 코드
const fs = require('fs');
const stdin = fs.readFileSync('/dev/stdin').toString().split('\n');
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
const calc = function (num1, num2, op) {
if (op === 'S') return num1 - num2;
else if (op === 'M') return num1 * num2;
else if (op === 'U') return parseInt(num1 / num2, 10);
else if (op === 'P') return num1 + num2;
else return num2;
};
const main = function () {
const n = +input();
const p = input().match(/[0-9]+|[A-Z]/g);
let op = '', val = 0;
let ans = p.reduce((ans, v) => {
if (isNaN(v)) {
if ((op = v) === 'C') ans += `${val} `;
} else {
val = calc(val, +v, op);
}
return ans;
}, '');
if (ans === '') ans = 'NO OUTPUT';
console.log(ans);
};
main();
728x90