코딩테스트/LV. 2

LV.2 :: 괄호 회전하기

KUROMI98 2025. 2. 21. 01:55

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

function solution(s) {
    // 올바른 괄호 문자열인지 확인하는 함수
    const isValid = (str) => {
        const stack = [];
        const pair = { ')': '(', '}': '{', ']': '[' };

        for (const char of str) {
            if (char in pair) {
                if (!stack.length || stack.pop() !== pair[char]) return false;
            } else {
                stack.push(char);
            }
        }
        return stack.length === 0;
    };

    let count = 0;
    const arr = s.split(""); // 문자열을 배열로 변환하여 회전 최적화

    for (let i = 0; i < s.length; i++) {
        if (isValid(arr.join(""))) count++;
        arr.push(arr.shift()); // 배열을 이용해 문자열 회전
    }

    return count;
}