728x90
https://school.programmers.co.kr/learn/courses/30/lessons/67257
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(expression) {
let answer=Number.MIN_SAFE_INTEGER
let operators = [
["+", "-", "*"],
["+", "*", "-"],
["-", "+", "*"],
["-", "*", "+"],
["*", "+", "-"],
["*", "-", "+"],
];
let arr = [];
let temp = "";
for (let i = 0; i < expression.length; i++) {
if (
expression[i] === "+" ||
expression[i] === "-" ||
expression[i] === "*"
) {
arr.push(temp);
arr.push(expression[i]);
temp = "";
} else if (i === expression.length - 1) {
temp += "" + expression[i];
arr.push(temp);
} else {
temp += expression[i];
}
}
for(let i=0;i<operators.length;i++){
calculate(operators[i])
}
function calculate(operatorArr) {
let slicedArr=arr.slice()
operatorArr.forEach((operator) => {
execute(operator,slicedArr);
});
answer=Math.max(Math.abs(slicedArr),answer)
}
function execute(operator,slicedArr) {
if (operator === "+") {
for (let i = 0; i < arr.length; i++) {
if (slicedArr[i] === "+") {
let v1 = slicedArr[i - 1];
let v2 = slicedArr[i + 1];
slicedArr.splice(i - 1, 2);
slicedArr[i - 1] = Number(v1) + Number(v2);
i = i - 2;
}
}
} else if (operator === "-") {
for (let i = 0; i < arr.length; i++) {
if (slicedArr[i] === "-") {
let v1 = slicedArr[i - 1];
let v2 = slicedArr[i + 1];
slicedArr.splice(i - 1, 2);
slicedArr[i - 1] = Number(v1) - Number(v2);
i = i - 2;
}
}
} else if (operator === "*") {
for (let i = 0; i < arr.length; i++) {
if (slicedArr[i] === "*") {
let v1 = slicedArr[i - 1];
let v2 = slicedArr[i + 1];
slicedArr.splice(i - 1, 2);
slicedArr[i - 1] = Number(v1) * Number(v2);
i = i - 2;
}
}
}
return slicedArr
}
return answer;
}
728x90
'알고리즘' 카테고리의 다른 글
2018 kakao blind recruitment >[1차] 비밀지도 (0) | 2024.03.25 |
---|---|
2019 KAKAO BLIND RECRUITMENT > 실패율 (1) | 2024.03.24 |
2020 카카오 인턴십>키패드 누르기 (0) | 2024.03.21 |
2022 KAKAO BLIND RECRUITMENT>신고 결과 받기도움말 (0) | 2024.03.18 |
2022 kakao tech internship > 성격 유형 검사하기 (3) | 2024.03.18 |