[스택/큐] 올바른 괄호

2022. 11. 23. 15:48·알고리즘/프로그래머스

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

입출력 예시

s answer
"()()" true
"(())()" true
")()(" false
"(()(" false

내 풀이

// Idea 
// 주어진 문자열에 대해 문자 별로 탐색을 진행한다. 
// 탐색 과정에서 만약 현재 문자가 ‘(’ (열린 괄호)라면 스택에 요소를 추가(push) 하고, ‘)’ (닫힌 괄호)라면 스택에 가장 나중에 들어간 요소를 제거(pop) 한다. 현재 문자가 ‘)’ (닫힌 괄호)인데 스택이 비어 있는 경우 리턴값은 false 이다.
// 완전 탐색이 종료된 후 스택이 비어 있다면 리턴값은 true, 그렇지 않은 경우 리턴값은 false이다.
// 스택 자료구조 이용.
// 스택 자료구조의 특성은 LIFO(Last In First Out)이다.

function solution(s){
    let answer = true;
    let stack = [];
    
    for (let i = 0; i < s.length; i++) {
        let current = s[i];
        if (current == "(") stack.push(current);
        else if (current == ")") {
            if (stack.length == 0) {
                answer = false;
                break;
            }
            stack.pop();
        }
    }
    
    if (stack.length != 0) answer = false;
    return answer;
}

출처

https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=javascript 

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

[스택/큐] 주식가격  (0) 2022.11.25
[스택/큐] 같은 숫자는 싫어  (0) 2022.11.23
[프로그래머스 - SQL] 상품 별 오프라인 매출 구하기  (0) 2022.11.22
[JS] 프로그래머스 - 위장  (0) 2020.11.14
[JS] 프로그래머스 - 소수 찾기(레벨2)  (0) 2020.11.11
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [스택/큐] 주식가격
  • [스택/큐] 같은 숫자는 싫어
  • [프로그래머스 - SQL] 상품 별 오프라인 매출 구하기
  • [JS] 프로그래머스 - 위장
rondeveloper
rondeveloper
  • rondeveloper
    Ron's learning record
    rondeveloper
  • 전체
    오늘
    어제
    • 분류 전체보기 (102)
      • k8s (2)
      • AWS (1)
      • 리눅스 (5)
      • Docker (8)
      • 라이브러리 & 프레임워크 (14)
        • React (2)
        • NestJS (8)
        • Spring (0)
        • Django (3)
        • FastAPI (1)
      • 웹 (2)
        • Nginx (1)
      • 프로그래밍 언어 (29)
        • HTML (0)
        • CSS (0)
        • JavaScript (21)
        • Python (3)
        • Node.js (0)
        • TypeScript (4)
        • Java (1)
      • Today I learned (9)
      • 알고리즘 (9)
        • 백준 (0)
        • 프로그래머스 (8)
        • 개념 (1)
      • 티끌모아 태산 (5)
        • 하루에 영단어 하나씩 (5)
        • 독서 (0)
      • 시행착오 (3)
      • 데이터베이스 (2)
        • MySQL (0)
      • 컴퓨터 과학 (8)
        • 네트워크 (2)
        • 운영체제 (0)
        • 데이터베이스 (2)
        • 자료구조 (4)
      • 포트폴리오 (4)
        • JJINCAFE IN SEOUL (4)
        • CODEUNICORN (0)
      • 회고 (0)
      • CICD (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    네트워크
    FastAPI
    Kubectl
    프로그래머스
    nestjs
    mysql
    반복문
    typescript
    생활코딩
    IP 주소
    Kubernetes
    레벨2
    모듈
    자바스크립트
    typeorm
    javascript
    Til
    기초
    컨테이너
    iterable
    배열
    조인
    스택
    코딩테스트
    django
    Docker
    도커
    redis
    리눅스
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
rondeveloper
[스택/큐] 올바른 괄호
상단으로

티스토리툴바