Sqsung DevLog

[백준] 1541번: 잃어버린 괄호 - Node.js (자바스크립트) 본문

Algorithm

[백준] 1541번: 잃어버린 괄호 - Node.js (자바스크립트)

sqsung 2023. 6. 20. 06:14

1. 문제 ㅡ 1541번: 잃어버린 괄호 (난이도: Silver II)

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

2. 풀이 ㅡ Node.js (자바스크립트)

const input = require('fs').readFileSync('/dev/stdin').toString().trim();

const getMinResult = equation => {
  const onlyPluses = equation.split('-');

  onlyPluses.forEach((eq, idx) => {
    if (!eq.includes('+')) return;

    const onlyNums = eq.split('+').map(val => +val);
    onlyPluses[idx] = onlyNums.reduce((a, c) => a + c);
  });

  return onlyPluses.reduce((a, c) => a - c);
};

console.log(getMinResult(input));

2-1. 풀이 설명

덧셈/뺄셈으로만 구성되어 있는 식의 최소 값을 계산하기 위해서는 모든 덧셈을 먼저 한 다음, 뺄셈을 해주면 된다. 

 

  • 입력으로 받은 식을 '-'를 기준으로 split 함 ('55-50+40' 의 경우 → [55, '50+40'] 으로 나눠짐) 
  • 해당 배열을 순회하며 '+'를 포함하고 있는 값은 다시 '+'를 기준으로 나누고, 이의 합을 배열에 다시 넣어줌 (배열 상태   [55, 90])
  • reduce 메서드 활용해 해당 배열에 있는 모든 값의 차를 반환한다 (출력  → -35)