[백준1541_자바스크립트(javascript)] - 잃어버린 괄호

경이·2024년 8월 6일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
108/325

🔴 문제

잃어버린 괄호


🟡 Sol

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변수를 만들어 풀이하면 된다.
이때 중요한 것은 연산자가 한번도 안 나올수도 있다. 따라서 런타임 에러를 방지하기 위해 반복문 돌리기전 연산자 유무를 확인해주면 정답


🔵 Ref

profile
록타르오가르

0개의 댓글