๐ฅ๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/67257
๐ฅํ์ด
1. ์ผ๋จ ์ฃผ์ด์ง ์์(expression)์ ์ฐ์ฐ์์ ํผ์ฐ์ฐ์๋ฅผ ๊ตฌ๋ถํ์ฌ ๋ฐฐ์ด๋ก ๋๋ด๋ค
-> [500, '-', 300 , '+', 200]
2. ์ด๋ฐ์์ผ๋ก ๋๋ ๋ค์ ์ต๋๋ก ๋์ฌ์์๋ ์ฐ์ฐ์์ 6๊ฐ์ง๋ฅผ ๋ชจ๋ ๊ตฌํจ
-> ํ๋จ op_order_arr ์ฐธ๊ณ
3. ์ฐ์ฐ์ ์์๋ก ๋์ฌ์ ์๋ 6๊ฐ์ง๋ฅผ ๋ชจ๋ ๋๋ ค๊ฐ๋ฉฐ ์ต๋๊ฐ์ ๊ณ์ ๊ฐฑ์
-> op_order_arr.forEach((op_arr)=> { ... }) // ํด๋น ์ฐ์ฐ ์ฐธ๊ณ
function solution(expression) {
let max = 0
let value = ''
let origin=[]
for(let i=0; i<=expression.length-1; ++i){
let cha = expression[i]
if(cha==='-'||cha==='+'||cha==='*'){
origin.push(Number(value))
value=''
origin.push(cha)
}else if(i===expression.length-1){
value+=cha
origin.push(Number(value))
}else{
value+=cha
}
}
const op_order_arr =
[['*','+','-'],
['*','-','+'],
['+','*','-'],
['+','-','*'],
['-','*','+'],
['-','+','*']]
op_order_arr.forEach((op_arr)=>{
let arr = [...origin]
op_arr.forEach((op)=>{
let i =0
while(i<=arr.length-1){
if(arr[i+1] && arr[i+1]===op){
let cha = arr[i+1]
let replaced_val = undefined
if(cha==='+'){
replaced_val = arr[i]+arr[i+2]
}else if(cha==='-'){
replaced_val = arr[i]-arr[i+2]
}else if(cha==='*'){
replaced_val = arr[i]*arr[i+2]
}
arr.splice(i,3,replaced_val)
}else{
++i
}
}
})
max=Math.max(max,Math.abs(arr[0]))
})
return max;
}
๐ฅํ๊ธฐ
์ฒ์์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐ๋ณตํ์ฌ ๋๋ฆฌ๋๊ฒ ์๊ฐ์ด๊ณผ ๋ ์ค์๊ณ ๋ฐ์ ๋ฐ์ ํ๋ฉฐ ์๋ํด๋ดค๋๋ฐ ๋คํํ ์๊ฐ์ ๊ฑธ๋ฆฌ์ง๋ ์์๋ค. ๊ทธ ๋ณด๋ค ์ฒซ๋ฒ์งธ ์์๋ฌธ์์ด(expression)์ ์ฐ์ฐ์, ํผ์ฐ์ฐ์ ๊ตฌ๋ถํ์ฌ ๋ฐฐ์ด๋ก ๋ง๋ค๋ ๋ง์ง๋ง ๋ฌธ์๋ฅผ ๋นผ๊ณ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ ํ์ฐธ ๊ณ ์ํ๋ค. ์ญ์ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ ๋๋ ๊ฐ์ก๊ณ ์ง์คํด์ ํธ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค.๐๐
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ์์ (0) | 2024.08.15 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋ฌด์ธ๋ ์ฌํ (0) | 2024.08.11 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > [3์ฐจ] n์ง์ ๊ฒ์ (0) | 2024.08.05 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ์ ์ ์ผ๊ฐํ (0) | 2024.08.04 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด (0) | 2024.07.20 |