올바른 괄호

heejung·2022년 1월 10일
0
post-thumbnail

괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

▣ 입력설명

첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.

▣ 출력설명

첫 번째 줄에 YES, NO를 출력한다.

▣ 입력예제 1

(()(()))(()

▣ 출력예제 1

NO

문제 풀이

  1. 첫번째부터 닫힌 괄호면 NO
  2. 열린 괄호면 stack에 넣어준다.
  3. 닫힌 괄호면
    3-1. stack이 비어있으면 닫힌 괄호가 더 많다는 뜻이니 NO
    3-2. stack이 비어있지 않으면 stack에서 빼준다.
  4. stack에 남아있는 게 있으면 짝이 안 맞는거니까 NO
function solution(str) {
    let answer = 'YES';
    let stack = [];
    if (str[0] === ')') return 'NO';
    for (let x of str) {
        if (x === '(') stack.push(x);
        else {
            if (stack.length === 0) return 'NO';
            stack.pop();
        }
    }
    if (stack.length > 0) return 'NO';
}

solution('(()()))');
profile
프론트엔드 공부 기록

0개의 댓글