개발 공부

(프로그래머스)(자바스크립트) 괄호 회전하기 본문

알고리즘

(프로그래머스)(자바스크립트) 괄호 회전하기

아이셩짱셩 2021. 7. 9. 15:41

코딩테스트 연습 - 월간 코드 챌린지 시즌2 - 괄호 회전하기 (약 30분 소요)

//특정 입력값 로깅을 위한 변수
var isLogging = false;

function solution(s) {
    var answer = 0;
    
    //if(s == "}]()[{"){
        //isLogging = true;
        //console.log("isLogging = "+isLogging);
    //}
    
    for(var i = 0 ; i < s.length ; i++){
        if(omit(s)){
            //console.log("touched");
            answer ++;
        }
        var temp = s.charAt(0); //charAt 찾아봄
        s = s.slice(1)+temp;    //slice 찾아봄
    }
    
    return answer;
}

var tempCount = 0;

function omit(ss){
    ss = ss.replace("[]","");   //ss = 빼먹음
    ss = ss.replace("{}","");
    ss = ss.replace("()","");
    //if(isLogging){
        //console.log("ss ::: "+ ss);    
        //console.log("ss.length ::: "+ ss.length);    
    //}
    if(ss.length > 0 && tempCount != ss.length){
        tempCount = ss.length;  //tempCount 처럼 무식하게 하지 않고 for문으로 ss의 length/2 만큼만 돌려주고 0이 되면 break 하면 됨. 모든 괄호가 없어지더라도 최대 length/2안에 결정 남.
        //omit(ss); //이렇게만 하면 들어가다 true 떠도 다시 나와서 기존 ss length와 비교한다. 아래처럼 바로 return 해줘야함.
        if(omit(ss)){
            return true;   
        }
    }
    
    tempCount = 0;
    //if(isLogging){
        //console.log(ss.length == 0 ? true: false);
    //}
    return ss.length == 0 ? true: false;
}​

 

 

Comments