Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 1931
- 유사배열
- 함수 arguments
- 9461
- 자류구조
- 백준
- 배열같은배열아닌너
- 함수 선언문
- setTiemOut
- 1543
- 탐욕 알고리즘
- 1668
- html5
- 1904
- 11399
- 1302
- 호이스팅
- 11047
- 렉시컬 스코프
- 동적계획법
- 1568
- 1236
- 함수 parmater
- 비동기처리
- event loop
- 2667
- 함수 이놈
- javascript
- Async/Await
- baekjoon
Archives
- Today
- Total
두치의 개발공부
BaekJoon_1541(잃어버린 괄호) 본문
문제
https://www.acmicpc.net/problem/1541
문제풀이
최솟값을 구하는거기 때문에 빼는 값이 최대인 경우를 구하면 총 합의 최솟값을 구할 수 있다.
우선 -로 split하여 - 뒤에 괄호로 묶일 수 있는 + 연산자를 나눈다.
ex) "55-50+45-20-10+30" => [55,50+45,20,10+30]
그 후에 +가 섞여있는 문자열을 +로 split한 후 합 연산을 한다.
ex) [55,50+45,20,10+30] => [55,95,20,40]
처음에 - 연산자로 split 하였던 거라 첫 번째 수 - (두 번째 수 부터 마지막 수 까지의 합) 을 하면 최솟값을 구할 수 있다.
코드
const answer = ([input]) => {
// - 를 기준으로 split하여 뺄 수 있는 수를 구분한다
// 55-50+45-20-10+30 => [55,50+45,20,10+30]
const numbers = input.split('-').map(data =>
// +로 되어있는 수를 split(+)하고 reduce를 통하여 더한다.
// [55,50+45,20,10+30] => [55,95,20,40]
data.split("+").map(Number).reduce((a, b) => a + b, 0)
);
// 처음에 split(-)를 하였던 거여서 첫번째 수-(두번째 수 부터 나머지 수 모두 더한 값)을 한다.
const firstNumber = numbers.shift();
const minusNumber = numbers.reduce((a, b) => a + b, 0);
console.log(firstNumber - minusNumber);
}
const input = [];
require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", (line) => {
input.push(line);
})
.on("close", () => {
answer(input);
process.exit();
});
코드는 깃헙에서도 확인할 수 있습니다.🤗
https://github.com/duduchi/Algorithm/tree/main/Greedy
'알고리즘' 카테고리의 다른 글
BaekJoon_1568(새) (0) | 2022.06.27 |
---|---|
BaekJoon_1543(문서 검색) (0) | 2022.06.23 |
BaekJoon_1931(회의실 배정) (0) | 2022.05.10 |
BaekJoon_11047(동전) (0) | 2022.05.09 |
BaekJoon_11399(ATM) (0) | 2022.05.06 |