[백준 1541] 잃어버린 괄호 with node.js

waterglasses·2022년 4월 6일
0
post-thumbnail

📌 문제

https://www.acmicpc.net/problem/1541

📌 풀이

이 문제는 그리디 문제이다.
+와 -로 구성된 식에서 괄호를 만들어 최소값을 만드는 문제이다.
최소값으로 만드려면 +로 이어진 숫자들을 더한 다음 -로 빼면 된다.

예를 들어 55-50+40 이라면
+로 연결된 50과 40을 먼저 더해서 90을 만들고
55에서 90을 빼면 된다.

위와같이 풀이한다.

📌 코드

const fs = require("fs");
const stdin = (
  process.platform === "linux"
    ? fs.readFileSync("/dev/stdin").toString().trim()
    : `10+20+30+40`
).split("\n");

const input = (() => {
  let line = 0;
  return () => stdin[line++];
})();

const expression = input().split("-");
const minusResult = [];
for (const item of expression) {
  const plusAccumulation = item
    .split("+")
    .map(Number)
    .reduce((accumulation, current) => accumulation + current);
  minusResult.push(plusAccumulation);
}

console.log(
  minusResult.reduce((accumulation, current) => accumulation - current)
);

📌 느낀점

오늘 문제는 금방 풀었다. reduce를 사용하여 쉽게 풀 수 있었다. 점점 갈수록 함수형 프로그래밍에 익숙해지는 것 같다. 화이팅!

profile
매 순간 성장하는 개발자가 되려고 노력하고 있습니다.

0개의 댓글