๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[Javascript] ๊ด„ํ˜ธ ๋ณ€ํ™˜ (60058)

๋ฌธ์ œ๋งํฌ

์ ‘๊ทผ๋ฐฉ๋ฒ•

๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฐ’๋“ค
1. ๊ด„ํ˜ธ (, )๋ฅผ countํ•  ๋ณ€์ˆ˜ left, right
2. ๊ด„ํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•  correctBracket
3. ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ• ๋•Œ u๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์œผ๋ฉด ๋งŒ๋“ค์–ด์งˆ ๋นˆ ๋ฌธ์ž์—ด emptyStr
4. u์˜ ์ œ์ผ ์•ž, ๋’ค ๊ด„ํ˜ธ๋ฅผ ์ง€์šฐ๊ณ  ๋’ค์ง‘ํžŒ ๋ฌธ์ž์—ด reversedStr

p = "()))((()" ์ผ๋•Œ ์ฝ”๋“œ์˜ ํ๋ฆ„์„ ์‚ดํŽด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
์ด๋•Œ correctBracket์ด false๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ))(( ๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ €๋•Œ else ๊ตฌ๋ฌธ์„ ๋Œ๊ฒŒ ๋œ๋‹ค.

 

 

function solution(p) {
    var answer = '';
    answer = strRecursive(p);
    return answer;
}

const strRecursive = (p) => {
    if(p.length === 0) return p;
    
    let left = 0;
    let right = 0;
    let correctBracket = true;

    for(let i = 0; i < p.length; i++){
        
        if(p[i] === '(') left++;
        else if(p[i] === ')') right++;
        
        if(left < right) correctBracket = false;
        
        if(left === right){
            const [u, v] = [p.slice(0,i+1) , p.slice(i+1)];
            
            if(correctBracket) {
                return u + strRecursive(v);
            }else{
                let emptyStr = '(' + strRecursive(v) + ')'
                const reversedStr = u
                    .slice(1, u.length-1)
                    .split('')
                    .map(e => e === '(' ? ')' : '(')
                    .join('')
                return emptyStr + reversedStr;
            };
        }
    }
}