FrontEnd/프로그래머스
[JS] 괄호 회전하기
정_민_규
2023. 6. 14. 15:26
728x90
2가지 함수를 활용해서 해결하였다.
1. 올바른 괄호열인지 확인하는 함수
스택 구조를 활용해서 {[( 와 같은 시작하는 괄호가 있으면 넣어주고 끝나는 괄호면 가장 최근에 들어갔던 괄호와 타입이 맞는지 체크한다. 문자를 다 돌았을때 스택에 아무것도 없다면 올바른 괄호열이다.
2. 회전하는 함수
문자열의 맨 첫문자를 뒤에 붙이면 왼쪽으로 1회 회전이 가능하다.
3. 회전 => 올바른 괄호인지 체크 후 카운트
function solution(s) {
const obj= {
'}' : '{',
']' : '[',
')' : '(',
}
const isCorrectBracket = (str) => {
const stk = []
for (const c of str) {
if ('{[('.includes(c)) stk.push(c)
else if (obj[c]!== stk.pop()) return false
}
return stk.length ? false :true
}
const rotate = (str) => str.substring(1) + str[0]
let ret = 0
for (let i = 0 ; i < s.length ; i++){
s = rotate(s)
ret += isCorrectBracket(s) ? 1 : 0
}
return ret
}
728x90