-
[프로그래머스] 수식최대화코딩테스트 2023. 5. 3. 10:27
function solution(expression) { //연산자의 우선순위를 자유롭게 재정의 할 수 있음. 같은 순위는 불가능! 계산된 결과가 음수 -> 절댓값으로 변환 // 가장 큰 참가자가 우승자. //우승 시 가장 큰 상금금액을 리턴하세요~~~!!! //uh..umm...다 해볼 수 밖에 없을 것같음... // 같은 연산자 끼리는 앞에 있는 것이 우선순위가 높다 var answer = 0; let num = ''; let arr = [] for(let i=0;i<expression.length;i++){ if(expression[i]==='-'||expression[i]==='+'||expression[i]==='*'){ arr.push(num) arr.push(expression[i]) num = '' }else{ num+=expression[i] } } arr.push(num) let arr1 = plus(minus(multi(arr))) let arr2 = plus(multi(minus(arr))) let arr3 = minus(plus(multi(arr))) let arr4 = minus(multi(plus(arr))) let arr5 = multi(minus(plus(arr))) let arr6 = multi(plus(minus(arr))) let answerArr = [...arr1,...arr2,...arr3,...arr4,...arr5,...arr6] answerArr = answerArr.map((el)=>Math.abs(el)) return Math.max(...answerArr); } function plus(arr){ let newArr = [] let arr2 = arr.slice() for(let i=0;i<arr2.length;i++){ if(arr[i]==='+'){ newArr.pop() arr2[i+1] = Number(arr2[i-1])+Number(arr2[i+1]) }else{ newArr.push(arr2[i]) } } return newArr; } function multi(arr){ let newArr = [] let arr2 = arr.slice() for(let i=0;i<arr2.length;i++){ if(arr[i]==='*'){ newArr.pop() arr2[i+1] = Number(arr2[i-1])*Number(arr2[i+1]) }else{ newArr.push(arr2[i]) } } return newArr; } function minus(arr){ let newArr = [] let arr2 = arr.slice() for(let i=0;i<arr2.length;i++){ if(arr[i]==='-'){ newArr.pop() arr2[i+1] = Number(arr2[i-1])-Number(arr2[i+1]) }else{ newArr.push(arr2[i]) } } return newArr; }
'코딩테스트' 카테고리의 다른 글
[못풀었다/프로그래머스/js] 멀쩡한 사각형 (0) 2023.05.18 코딩테스트시 주의해야할 사항 (0) 2023.05.09 [재풀이/릿코드] 62. Unique Paths (0) 2023.05.02 [프로그래머스/javascript] [3차] 방금 그곡 (0) 2023.04.30 [릿코드/js] 1046. Last Stone Weight (0) 2023.04.24