[프로그래머스] 올바른 괄호 (자바스크립트, JavaScript)

young_pallete·2021년 8월 4일
0

Algorithm

목록 보기
9/32

시작하며 🤟🏻

오늘은 올바른 괄호를 풀었어요!
간만에 공부한 스택이었는데, 괄호 문제를 오랜만에 봐서 좀 헷갈리긴 하더라구요. 그래도 침착하게 풀긴 했어요! 최근 알고리즘 공부한 보람이 있나봐요. 😘
그럼, 시작합니다!

풀이과정 📃

저는 보자마자 다음과 같이 생각했어요.

  1. 일단 괄호문제다. 스택의 냄새가 킁킁... 🐶
  2. 그렇다면 일단 예외를 잘 주시해보자! 일단 뒤가 '(' 나온 순간 탈락!
  3. 설사 (가 나온더라도 )가 있어야 한다. 따라서 )를 계속 세면서 주시하자!
  4. )를 세다가 (가 나오면 하나씩 카운트를 빼주자
  5. 마지막에 카운트가 없고, 끝까지 다 완주했다면 (while문이겠죠?!) true!

이렇게 생각했어요!
이를 코드로 표현하면 다음과 같답니다 :)

/*
    1. 일단 뒤쪽부터 pop을 한다.
    2. s가 무조건 맞다면, 일단 ) 앞에는 언젠가는 (가 무조건 와야 한다.
    3. 또한, 만약 (가 왔는데, )가 없다면 이 역시 틀린 답이다.
    4. 2~3을 만족한다면 올때까지 )가 나온 개수를 센다. 이때 (가 오면 count를 없앤다.
    5. 끝까지 실행. 만약 ) 개수가 0이 아니라면, 틀린 답!
*/ 

/*
    * 제한사항 
    1: 0 < s.length < 100000
    2: s는 '(' 또는 ')'로만 이루어짐. 
*/
const solution = s => {
    // cnt: 현재까지 pop됐지만 괄호를 찾지 못한 ')'의 개수
    let cnt = 0;
    let left = "("
    const sArr = s.split("");
    while(sArr.length) {
        // now: 현재 pop된 괄호.
        const now = sArr.pop();
        if (now === left && cnt === 0) return false;
        now === left ? cnt-- : cnt++;
    }
    return cnt === 0;
}

마치며😂

일단 괄호문제를 오랜만에 봤는데, 아직 감이 남아있다는 것에 감동... (거의 5개월된...)
얼른 다른 문제들도 풀고 싶네요. 화이팅!

profile
People are scared of falling to the bottom but born from there. What they've lost is nth. 😉

0개의 댓글