
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const inputs = fs.readFileSync(path).toString().trim();
const number = inputs.match(/\d+/g).map(Number);
const operator = inputs.match(/[+-]/g);
let answer = number.shift();
let trigger = false;
if (operator) {
for (let i = 0; i < operator.length; i++) {
if (!trigger) {
if (operator[i] === '+') answer += number[i];
else {
trigger = true;
answer -= number[i];
}
} else {
answer -= number[i];
}
}
}
console.log(answer);
⏰ 소요한 시간 : 25분
괄호라길래 엄청 난해한 큐 문제일줄 알았는데 단순한 수학 문제였다. 괄호의 제한이 없었고 숫자가 0으로 시작해도 된다는 조건이 있어 쉽게 풀이할 수 있었다.
정규식을 사용해 숫자와 문자를 구분해 준 뒤 첫 숫자는 무조건 양수므로 첫 숫자를 answer라는 변수로 초기화 해서 연산자의 종류에 따라 answer를 업데이트 해주면 된다.
한 번이라도 -가 나온 경우 그 후의 +는 괄호를 쳐서 다 마이너스로 묶어주면 된다. 따라서 -가 나왔는지 안나왔는지 확인하는 trigger변수를 만들어 풀이하면 된다.
이때 중요한 것은 연산자가 한번도 안 나올수도 있다. 따라서 런타임 에러를 방지하기 위해 반복문 돌리기전 연산자 유무를 확인해주면 정답