DevLog:-)

[프로그래머스][Javascript]괄호 회전하기 본문

알고리즘/프로그래머스

[프로그래머스][Javascript]괄호 회전하기

hyeon200 2023. 7. 26. 19:06
반응형

문제

괄호 회전하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

코드

function solution(s) {
    var answer = 0;
    
    function check(a) {
        let stack=[];
        for(let i of a){
            //console.log(i);
            if(i == "[" || i =="(" || i =="{"){
                stack.push(i);
            }
            else{
                if(i == ']'){i = '['}
                else if(i =='}'){i ='{'}
                else if(i ==')'){i ='('}
                if(stack.pop() != i){
                    return false;
                }
            }
        } 
        if(stack.length != 0){return false;}
        else{return true;}
    }//함수 끝
    
    new_s = s+s;
    
    for(let i in s){
        if(check(new_s.substr(i,s.length))){answer++;}
    }
    
    return answer;    
}

 

 

✅checkpoint!

[배열에 값을 추가하는 함수]  
arr.push() 배열의 맨 끝에 값을 추가
arr.unshift() 배열의 맨 앞에 값을 추가
[배열에 값을 제거하는 함수]  
arr.shift() 배열의 맨 앞에 값을 제거
arr.pop() 배열의 맨 끝에 값을 제거

 

💡아이디어 요약

stack활용 올바른 괄호 문자열인지 확인하는 check함수를 따로 만들어서 품

열린 괄호 "[ ( {" -> stack에 넣음
닫힌 괄호 "] ) }" -> stack에서 pop했을 때 짝인 것이 안나오면 올바르지 않은 괄호 문자열

괄호 문자열 순회가 끝나고 stack을 확인했을 때 비어있지 않으면 올바르지 않은 괄호 문자열
                                            stack이 비어있으면 올바른 문자열

 

반응형