ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๊ด„ํ˜ธ ๋ณ€ํ™˜ ( 2020 KAKAO BLIND RECRUITMENT )

2024. 8. 24. 20:37ยท๐Ÿ”’Algorithm

๐Ÿ”ฅ๋ฌธ์ œ๋งํฌ

https://school.programmers.co.kr/learn/courses/30/lessons/60058

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ”ฅํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๋ณ€ํ™˜์„ ์ง€์†์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 

์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ•จ์ˆ˜ ๋‘๊ฐœ๋ฅผ( ๊ท ํ˜•์žกํžŒ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ธ์ง€ ํŒ๋‹จ ํ•˜๋Š” ํ•จ์ˆ˜ => is_balanced_string, ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ํ•จ์ˆ˜ =>is_right_string ) ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ์žฌ๊ท€ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ด์šฉํ•˜์—ฌ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ ํ–ˆ๋‹ค.

function solution(p) {
    const is_balanced_string=(str)=>{
        let [open_flag,close_flag]=[0,0]
        let str_arr = str.split('')
        str_arr.forEach((cha)=>{
            if(cha==='('){
                open_flag+=1
            }else{
                close_flag+=1
            }
        })
        return open_flag===close_flag 
    }
    
    const is_right_string=(str)=>{
        let arr =[]
        let str_arr = [...str]
        
        for(const cha of str_arr){
            if(cha==='('){
                arr.push('(')
            }else if(cha===')'){
                if(arr.at(-1) && arr.at(-1) === '('){
                    arr.pop()
                }else{
                    arr.push(')')
                    break;
                }
            }
        }
        return arr.length===0
    }
    
    // ๋นˆ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ 
    if(p.length===0) return p
    // ์˜ฌ๋ฐ”๋ฅธ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ
    if(is_right_string(p)) return p
    
    let answer =''
    
    const recursive=(str)=>{
        if(!str || str===''){
            return 
        }
        if(is_right_string(str)){
            answer+=str
            return
        }
        
        let str_arr= str.split('')
        let u=''
        let v=''
        
        while(1){
            let cha = str_arr.shift()
            if(!cha){ break;}
            u+=cha
            
            if(is_balanced_string(u)){
                if(is_right_string(u)){
                    answer+=u
                    let v=str_arr.join('') // '' ์ผ ์ˆ˜ ์žˆ์Œ
                    recursive(v)
                    break;
                }else{
                    let new_arr = [...u]
                    let v=str_arr.join('')
                    answer+='('
                    recursive(v)
                    answer+=')'
                    
                    new_arr.shift()
                    new_arr.pop()
                    new_arr=new_arr.map((cha)=>{
                        return cha==='(' ? ')': '('
                    })
                    let reversed_string=new_arr.join('')
                    answer+=reversed_string
                    break;
                }
            }
        }
    }
    
    recursive(p)
    return answer;
}

'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๊ฑฐ์Šค๋ฆ„๋ˆ  (2) 2024.09.06
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๋ฆฌ์ฝ”์ณ‡ ๋กœ๋ด‡  (0) 2024.08.25
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธํ–‰์‚ฌ  (0) 2024.08.24
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๋‹จ์–ด๋ณ€ํ™˜  (0) 2024.08.24
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์ˆœ์œ„  (0) 2024.08.15
'๐Ÿ”’Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๊ฑฐ์Šค๋ฆ„๋ˆ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๋ฆฌ์ฝ”์ณ‡ ๋กœ๋ด‡
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ์ด๋ชจํ‹ฐ์ฝ˜ ํ• ์ธํ–‰์‚ฌ
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๋‹จ์–ด๋ณ€ํ™˜
devWarrior
devWarrior
  • devWarrior
    devWarrior
    devWarrior
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๐ŸงฉDev (263)
      • โญFE (34)
      • ๐Ÿ”’Algorithm (155)
      • โž•Etc. (11)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
    • ๊ด€๋ฆฌ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ”„๋ก ํŠธ์—”๋“œ
    javascript
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์‹ค๋ฒ„2
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ๊ทธ๋ฆฌ๋””
    BFS
    ์‹ค๋ฒ„4
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    ์‹ค๋ฒ„3
    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
    react
    node.js
    ์‹ค๋ฒ„1
    leetcode
    ์ž์Šค
    ์ฝ”ํ…Œ
    Easy
    ๋ฐฑ์ค€
    ๊ณจ๋“œ5
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    FE
    DFS
    nodejs
    ์˜ค๋ธ”์™„
    Lv2
    Algorithm
    ๊ตฌํ˜„
    dp
    js
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
devWarrior
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค[JS] > ๊ด„ํ˜ธ ๋ณ€ํ™˜ ( 2020 KAKAO BLIND RECRUITMENT )
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”