연산자는 [* + -] 3개만 쓰이는 수식이 주어지고,
기존의 연산 순서와는 다르게 계산하여 어떤 연산자를 우선순위로 계산해야
최댓값이 나오는지 찾는 문제이다.
즉, 원래대로라면 먼저, +-연산은 그 다음에 계산하는 것이 맞지만
만약 +를 먼저 계산 후 를 계산, 그리고 -를 마지막에 계산한 결과값이 더 크다면 이 순서로 계산하여 최댓값을 산출하는 문제
내가 푼 코드의 기본 아이디어는 아래와 같다.
수식에서 숫자만 따로 뽑아 배열을 만든다.
수식에서 연산자만 따로 뽑아 배열을 만든다.
ex)"100-200300-500+20"
const nums= [100,200,300,500,20]
const operator =[-,,-,+]
정규 표현식으로 주어진 수식 expression을 분리할거얌
3.연산자 3개(*,-,+)의 가능한 순서 조합을 배열로 만든다.
만약 삭제가 이루어졌다면, 반복문에 쓰이는 변수 i값을 -1로 초기화해주어서, nums, operator 배열을 처음부터 다시 돈다. (같은 연산자가 3번, 4번 반복해서 나올 수 있으니 계속 찾으려고)
어떤 과목이었는지는 기억이 안나는데
후위표기, 중위표기 같은 수식 표기법을 배울때
stack 자료형에 숫자랑 연산자가 들어왔다 나갔다 하는 이미지가 떠올라서
그렇게 풀었다.
아래는 전체코드
마지막에 return max; 해주면 끝