프로그래머스/구현
[문자열] 프로그래머스 '괄호 회전하기' - js
bbeyak
2023. 3. 28. 13:01
반응형
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;
}
반응형