[JavaScript][Programmers] 괄호 회전하기

조준형·2021년 8월 7일
0

Algorithm

목록 보기
56/142
post-thumbnail

🔎 괄호 회전하기

❓ 문제링크

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

📄 제출 코드

function solution(s) {
    let stack = Array.from(s);
    var answer = 0;
    
    for (let i = 0; i < stack.length; i++) {
        let st = [];
        for (let j = 0; j < stack.length; j++) {
            st.push(stack[j]);
            console.log(`before : ${st}`);
            if ((st[st.length - 2] === "(" && st[st.length - 1] === ")") ||
                (st[st.length - 2] === "{" && st[st.length - 1] === "}") ||
                (st[st.length - 2] === "[" && st[st.length - 1] === "]")) {
                st.pop();
                st.pop();
            }
            console.log(`after : ${st}`);
        }
        if (st.length == 0) answer++;
        //console.log(answer);
        let first = stack.shift();
        stack.push(first);
        //console.log(stack.toString())
    }
    return answer;
}
let s = "[](){}";
console.log(solution(s));

예전에 비슷한걸 풀어본 적있어서 쉽게 접근했던거 같다. stack을 이용해서 풀었다.
먼저 문자열 s를 배열로 복사하고, 배열길이만큼 반복한다. (왼쪽 회전을 위해서)
짝이 맞으면 지우고, 안맞으면 그대로 둘 stack st를 만들고, stack을 돈다.
먼저 현재위치의 글자를 넣고, (,{.[ 각각 짝이 맞는 경우 그 두가지를 pop해서 지운다.

마지막에 반복이 끝나고 st가 비어져있다면 answer에 +1.
그 다음 가장 앞에 친구를 빼서 마지막에다 넣어서 다시 반복해서 답을 도출해낸다.

profile
깃허브 : github.com/JuneHyung

0개의 댓글