본문 바로가기
코딩테스트(알고리즘)/프로그래머스

[프로그래머스] 괄호 변환 (Javascript)

by Cafe Mocha 2022. 7. 1.

코딩테스트 연습 - 괄호 변환 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 괄호 변환

카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를

programmers.co.kr


접근 : 스택, 재귀

 

알고리즘을 주어줘서 그나마 풀 수 있었던 문제였다.

처음에는 혼자 풀어서 20점이나와 재귀방법을 참고하고 풀었다.

 

재귀를 알고있지만 활용하는 부분에서 많이 부족함을 느끼고 있다.

 

Javascript

function solution(p) {
    var answer = '';
    
    if(p.length===0) return "";
    
    let left = 0;
    let right = 0;

    for(let i=0;i<p.length;i++){
        if(p[i]==="(") left++;
        else right++;
        
        if(left===right){
            if(check(p.slice(0,i+1))){
                answer = p.slice(0,i+1) + solution(p.slice(i+1));
                return answer;
            }else {
                answer = "("+solution(p.slice(i+1)) +")";
                
                for(let j=1;j<i;j++){
                    if(p[j]==="("){
                        answer +=")";
                    } else {
                        answer +="("
                    }
                }
            }
            
            return answer;
        }
    }
    
    
    
    
    return answer;
}



function check (u){
    let stk = [];
    for(let i=0;i<u.length;i++){
        if(u[i]==="(") stk.push(u[i]);
        else {
            if(stk.length===0) return false;
            if(stk[stk.length-1] ==="("){
                stk.pop();
                } 
            }
        }
    
    if(stk.length===0) return true;
    else return false;
        
}