jiho_bae
Go devlog
jiho_bae
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (38)
      • theory (34)
      • vanilla (4)
    • HTML & CSS (2)
    • Browser (3)
    • CS (6)
      • linux (1)
      • shell (2)
      • compiler (2)
    • DS & Algorithm (87)
      • theory (5)
      • basic (7)
      • programmers (30)
      • baekjoon (45)
    • Design Pattern (2)
    • Error (4)
    • Git & Github (4)
    • Tools (1)
    • 부트캠프 (4)
    • Small Tips (2)
    • Java (3)
    • test (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트 비동기 마이크로 태스크 큐와 렌더링 과정
  • 병합정렬 자바스크립트
  • 자바스크립트 이벤트 위임
  • 리액트 프로젝트 디버깅하기
  • 계수정렬 자바스크립트
  • 깃 이전 커밋에서 새 브랜치 만들기
  • 백준 자바스크립트 입력 템플릿
  • 자바스크립트 배열의 특수함
  • 1753 최단경로 javascript
  • 백준 17406 nodeJS
  • JavaScript
  • 자바스크립트 모듈 시스템
  • 외벽 점검 javascript
  • fetch 취소하기
  • 자바스크립트 sort는 왜 그모양일까
  • 자바스크립트 커링
  • javascript use strict
  • 자바스크립트 채팅방 스크롤
  • 퀵정렬 자바스크립트
  • safari Date format NaN
  • 가사 검색 자바스크립트
  • 카카오 코딩테스트 양궁대회 nodeJS
  • safari invalid date error
  • 프로그래머스 숫자카드나누기 javascript
  • 덧칠하기 javascript
  • 13460 javascript nodejs
  • 대충만든자판 javascript
  • 리코쳇 로봇 javascript
  • 억억단을 외우자 javascript
  • 25632 소수 부르기 게임

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
jiho_bae

Go devlog

DS & Algorithm/baekjoon

[백준] 1541번 잃어버린 괄호 - JavaScript(NodeJS)

2021. 7. 19. 02:42

문제

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

코드

function sol(input) {
  const numbers = input.split("-").map((str) =>
    str.split("+")
       .map(Number)
       .reduce((s, v) => s + v, 0)
  );
  let answer = 2 * numbers[0] - numbers.reduce((s, v) => s + v, 0);
  return answer;
}

require("readline")
  .createInterface(process.stdin, process.stdout)
  .on("line", (line) => {
    console.log(sol(line));
  })
  .on("close", () => {
    process.exit();
  });

 

풀이

식이 0~9까지의 숫자와 +, - 를 조합한 문자열로 주어진다.

 

이 식의 값을 최소로 만들기 위한 적절한 괄호를 추가해야 하는데,
괄호는 실행의 우선순위를 의미한다.

 

값이 최소가 되는 방법으로 모든 + 연산자를 처리하고, 다음으로 - 연산자를 처리하면 된다.

 

그래서 주어진 문자열에서 "-" 연산자를 기준으로 문자열을 나눴고,
나눈 문자열은 "1", "1+2", "1+2+3" 등 숫자와 "+"만 포함된다.

 

그리고 나눠진 문자열에서 "+" 연산자를 기준으로 피연산자를 구해서 모두 더한 값을 배열에 차례대로 넣어준다.

 

이제 배열에 남은 숫자들을 각각 "-" 연산을 수행하면 된다.
A-B-C-D ... 등과 같이 첫 숫자에서 다른 모든 숫자를 빼주면 최솟값을 구할 수 있다.

 

주석을 포함한 코드

function sol(input) {
  const numbers = input.split("-").map((str) => // -를 기준으로 분리해서 분리한 문자열을 모두 탐색
    str.split("+")
       .map(Number)
       .reduce((s, v) => s + v, 0) // +를 기준으로 나눠서 모두 더해준다.
  ); // -를 기준으로 분리된 문자열의 갯수만큼 numbers 배열의 원소 개수가 된다.
  let answer = numbers[0] * 2 - numbers.reduce((s, v) => s + v, 0); // 첫번째 원소에서 나머지 모든 원소를 빼준다.
  return answer;
}

require("readline")
  .createInterface(process.stdin, process.stdout)
  .on("line", (line) => {
    console.log(sol(line));
  })
  .on("close", () => {
    process.exit();
  });
저작자표시 (새창열림)

'DS & Algorithm > baekjoon' 카테고리의 다른 글

[백준] 17406번 배열 돌리기 4 - 자바스크립트  (0) 2022.04.15
[백준] 13460번 구슬 탈출 2 - 자바스크립트  (0) 2022.03.25
[백준] 2108번 통계학 - JavaScript(NodeJS)  (0) 2021.07.18
[백준] 2231번 분해합 - JavaScript(NodeJS)  (0) 2021.07.16
[백준] 3055번 탈출 - JavaScript(NodeJS)  (0) 2021.07.07
    'DS & Algorithm/baekjoon' 카테고리의 다른 글
    • [백준] 17406번 배열 돌리기 4 - 자바스크립트
    • [백준] 13460번 구슬 탈출 2 - 자바스크립트
    • [백준] 2108번 통계학 - JavaScript(NodeJS)
    • [백준] 2231번 분해합 - JavaScript(NodeJS)
    jiho_bae
    jiho_bae
    하루에 한 걸음씩

    티스토리툴바