문제 :
문자열로된 수식을 입력했을때 괄호를 만들어서 계산했을 때 결과가 최대한 최솟값이 나오도록 하세요.
예 :
input : '55-50+40' // => 55-(50+40)
output : -35
내 답 :
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 32 33 34 35 36 37 38 39 | var userInput = prompt("Enter a string:"); var findMinByBracket = function(str) { // -30-10-50+30-3122+325 => -3567 // var exceptMinusArr = str.split('-') => ["", "30", "10", "50+30", "3122+325"] // exceptMinusArr.forEach 후 elem.length가 0 이라면 (''인 경우) elem = '0'으로 바꿔줌 // var exceptPlusMinus = []; exceptPlusMinus.push(eval(elem)) => [ 0, 30, 10, 80, 3447 ] // var resultStr = exceptPlusMinus.join('-') => '0-30-10-80-3447' // return eval(resultStr); var exceptMinusArr = str.split('-'); var exceptPlusMinus = []; exceptMinusArr.forEach((elem, i) => { if(exceptMinusArr[i].length === 0) { exceptMinusArr[i] = '0'; } }); exceptMinusArr.forEach(elem => { exceptPlusMinus.push(eval(elem)); }); var resultStr = exceptPlusMinus.join('-'); return eval(resultStr); //console.log(exceptMinusArr); //console.log(exceptPlusMinus); }; console.log(findMinByBracket (userInput)); // -30-10-50+30-3122+325 => -3567 // -30-10-(50+30)-(3122+325) // +끼리 묶어준다. | cs |
그런데 eval()을 쓰면 좋지 않아서
eval() 기능을 하는 함수를 만들어봤다.
이 eval 대신 이 함수를 적용해도 같은 값이 나온다.
'Programing > 어려웠던 문제' 카테고리의 다른 글
[JavaScript] codewars - (7kyu) Remove the minimum (0) | 2019.02.10 |
---|---|
[JavaScript] function안에 function을 return 하는 것 (0) | 2019.01.29 |