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 |
Tags
- 투포인터알고리즘 js
- 모던 자바스크립트 Deep Dive TIL
- Vue3 Router
- Vue3
- 모던 자바스크립트 Deep Dive
- 우테캠 회고록
- 프로그래머스 K_Digital Training
- KDT 프로그래머스
- KDT 프로그래머스 데브코스 프론트엔드
- 개발자 특강
- 프로그래머스 데브코스
- 프로그래머스 데브코스 프론트엔드 TIL
- Frontend Roadmap
- 모던 자바스크립트 TIL
- react 프로젝트 리팩토링
- 프로그래머스 K_Digital Training 프론트엔드
- frontend roadmap study
- 백준 node.js
- 모던 자바스크립트 딥다이브
- 프로그래머스 데브코스 프론트엔드
- 머쓱이
- 리팩토링 회고
- useEffect return
- 백준 js
- 모던 javascript Deep Dive
- TypeScript 문법 소개
- react customHook 예시
- useRef 지역 변수
- K_Digital Training
- 인프런 자바스크립트 알고리즘 문제풀이
Archives
- Today
- Total
프론트엔드 개발자의 기록 공간
[백준 node.js] 1541번_잃어버린 괄호 본문
백준 그리디 알고리즘 2217번_로프
난이도 : 실버II
문제 설명
입출력
문제 풀이 : 주어진 식에서 가장 최소 값으로 만들면된다. 주어진 예제에서는 55-(50+40) 일때 가장 최소 값이 나온다.
즉, - 기준으로 입력을 받아 리스트에 정렬해준다. 그러면 리스트 안에는 숫자만 있거나 +연산이 존재한다.
반복문을 통해 + 연산 기준으로 연산을 수행해준후 리스트를 반복문으로 돌면서 값을 빼주면 최소값이 나온다.
예를들어 55-50+40+20-10+5 가 입력으로 주어지면 -기준으로 나누어준다. [55, 50+40+20, 10+5] 가 된다.
이후 리스트 요소별로 계산을 해준다. [55, 110, 15] 가 된다. 이후 반복문을 통해 값을 빼주면 최소값이 된다.
55 - 110 - 15 = -70
function solution(list) {
let tmp = [];
//-로 분리된 list를 다시한번 +기준으로 분리 시킨후 각각의 배열요소의 합을 구함
for(i of list){
let cnt = 0;
let s = i.split("+");
//+로 분리후 cnt에 값을 더한후 tmp에 삽입
for(j of s){
cnt += parseInt(j);
}
tmp.push(cnt);
}
// 위 과정을 eval함수로 함축할 수 있다. 하지만 백준사이트에서는 오류가 발생긴다.
// //list 각각의 요소 전부 계산 eval이용
// for(i of list){
// tmp.push(eval(i));
// }
let result = tmp[0];
//연산된 결과값에 - 를 붙여 계산
for(let j=1; j<tmp.length; j++){
result -= tmp[j];
}
console.log(result);
}
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
rl.on("line", function (line) {
input = line;
rl.close();
}).on("close", function () {
//-기준으로 문자열 분리
let list = input.split('-');
solution(list);
});
* JS에서는 eval 함수가 존재한다. eval은 문자열로 된 연산을 처리해주는 함수이다. 즉 "50-15+50" 이라는 문자열이 있다면 이것을 eval함수를 이용하면 알아서 수식처리를 해주는 아주 유용한 함수이다. 그래서 나는 -기준으로 나눈후 각각의 연산을 eval로 해주어서 제출했는데 실패 처리가 되었다. 결과값과 과정은 동일한데 실패 처리가 된다. 아마 백준에서 node.js가 완벽히 지원안되는 탓인거같다.
728x90
'알고리즘_JS > 백준_Greedy' 카테고리의 다른 글
[백준 node.js] 1080번_행렬 (0) | 2020.12.26 |
---|---|
[백준 node.js] 1946번_신입 사원 (0) | 2020.12.25 |
[백준 node.js] 2217번_로프 (0) | 2020.12.25 |
[백준 node.js] 5585번_거스름돈 (0) | 2020.12.25 |
[백준 node.js] 1931번_회의실배정 (0) | 2020.12.25 |
Comments