본문 바로가기

프로그래머스/구현

[문자열] 프로그래머스 '괄호 회전하기' - js

반응형

1. 문제

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

 

프로그래머스

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

programmers.co.kr

2. 코드

function solution(s) {
    let cnt = 0;
    
    // 회전안한 상태의 s
    isRight(s) ? cnt++ : null;
    let newS = s.slice();
    
    for(let i=1;i<s.length;i++){
    	// 한 칸씩 왼쪽으로 회전
        newS = newS.slice(1) + newS[0];
        isRight(newS) ? cnt++ : null;
    }
    
    return cnt;
}

// 문자열의 괄호 순서가 맞는지 확인하는 함수
function isRight(str){
    let stack = [];
    if(str[0] === ")" || str[0] === "]" || str[0] === "}") return false;
    
    for(let i=0;i<str.length;i++){
        if(str[i] === "(" || str[i] === "[" || str[i] === "{") stack.push(str[i]);
        else if(str[i]===")" && stack[stack.length-1]==="(" || str[i]==="}" 
        && stack[stack.length-1]==="{" || str[i]==="]" 
        && stack[stack.length-1]==="[") stack.pop();
    }
    
    return stack.length === 0 ? true : false;
}
반응형