Notice
Recent Posts
Recent Comments
Link
ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆ˜์‹ ์ตœ๋Œ€ํ™” (js) ๋ณธ๋ฌธ

๐Ÿ”ฅ Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ˆ˜์‹ ์ตœ๋Œ€ํ™” (js)

Lennon 2021. 10. 31. 17:54
728x90
๋ฐ˜์‘ํ˜•

https://programmers.co.kr/learn/courses/30/lessons/67257?language=javascript

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต

ํž™์€ ํŠน์ •ํ•œ ๊ทœ์น™์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ๋กœ, ํž™์„ ์ด์šฉํ•ด์„œ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์–ธ์–ด์—์„œ ์ด๋ฏธ ๊ตฌํ˜„๋œ ์šฐ์„ ์ˆœ์œ„ ํ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ํšจ์œจ์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€

programmers.co.kr

 

 

function solution(expression) {
    
    
    const expressionCombination = [
        ['-', '+', '*'],
        ['-', '*', '+'],
        ['+', '-', '*'],
        ['+', '*', '-'],
        ['*', '-', '+'],
        ['*', '+', '-']
    ];
    
    return expressionCombination.map((v) => {
        
        let devideResult = devideExpression(expression);
        
        v.forEach(v1 => {
            
            while(true){
                
                if(devideResult.includes(v1)){
                    
                    const idx = devideResult.indexOf(v1);
                    
                    if(v1 === '-') {
                        const value = parseInt(devideResult[idx-1]) - parseInt(devideResult[idx+1]);
                        
                        spliceCalculate(devideResult, idx, value);
                        
                    }
                    
                    else if(v1 === '+'){
                        const value = parseInt(devideResult[idx-1]) + parseInt(devideResult[idx+1]);
                        
                        spliceCalculate(devideResult, idx, value);
                        
                    }
                    else if(v1 === '*'){
                        const value = parseInt(devideResult[idx-1]) * parseInt(devideResult[idx+1]);
                        
                        spliceCalculate(devideResult, idx, value);
                        
                    }
                    
                }
                
                else break;
                
            }        
            
        })
        
        return devideResult.join("");
        
    }).map(v => Math.abs(parseInt(v))).sort((a,b) => b-a)[0];
    

}


const devideExpression = string => {
    
    let devide = [];
    let str = '';
    
    for(let i = 0; i < string.length; i++){
        
        if(isNaN(string[i])){
            devide.push(str);
            devide.push(string[i]);
            str = '';
            continue;
        } 
        
        str += string[i];
        
    }  
    
    devide.push(str);
    
    return devide;
}


const spliceCalculate = (devideResult, idx, value) => {
    
    devideResult[idx] = value;
    devideResult.splice(idx-1,1);
    devideResult.splice(idx,1);
    
}

 

 

devideExpression ํ•จ์ˆ˜ => str์„ ์ž…๋ ฅํ•˜๋ฉด ์ˆ˜์‹์„ ๋‚˜๋ˆ„์–ด ๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด

                   

                              ex) "100-200-300"  => [ '100',  '-',  '200', '-', '300' ]

 

spliceCalculate ํ•จ์ˆ˜ => ๋ฐฐ์—ด๊ณผ ์ธ๋ฑ์Šค value๊ฐ’ ์ž…๋ ฅํ•˜๋ฉด ๋ฐฐ์—ด์—์„œ ๊ณ„์‚ฐํ•ด์ฃผ๊ณ  ์งœ๋ฅด๋Š” ํ•จ์ˆ˜

                               

                              ex)  spliceCalculate([ '100',  '-',  '200', '-', '300' ]  ,  1,  100-200) ์ด๋ ‡๊ฒŒ ์ž…๋ ฅ์ด ๋์œผ๋ฉด

 

                                 =>  [ '-100', '-', '300' ] ์ด ๋จ.

 

 

solution์—์„œ +, -, *์˜ ๋ชจ๋“  ์กฐํ•ฉ์„ ๊ตฌํ•œ ํ›„ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค +,-,*์— ๋”ฐ๋ผ spliceCalculateํ•จ์ˆ˜์— ์žˆ๋Š” value๊ฐ’์„

์ •ํ•ด์ค€ ํ›„ ๊ณ„์‚ฐํ•˜์—ฌ ์ ˆ๋Œ“๊ฐ’ํ•˜๊ณ  ์ •๋ ฌ ํ›„ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค ๋ฆฌํ„ดํ•˜๋ฉด ๋! 

728x90
๋ฐ˜์‘ํ˜•
Comments