FrontEnd/프로그래머스

[JS] 괄호 회전하기

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

'FrontEnd > 프로그래머스' 카테고리의 다른 글

[JS] 메뉴 리뉴얼  (0) 2023.06.16
[JS] 순위 검색  (0) 2023.06.16
[JS] 행렬 테두리 회전하기  (0) 2023.06.14
[JS] 두개 이하로 다른 비트  (0) 2023.06.13
[JS] 거리두기 확인하기  (0) 2023.06.13