[바킹독의 실전 알고리즘] 스택의 활용(수식의 괄호 쌍)

Jeanine·2022년 3월 10일
0

algorithm

목록 보기
8/17
post-thumbnail

수식의 괄호 쌍이란?

주어진 괄호 문자열이 올바른지 판단하는 문제

로직

  • 짝맞추기를 해서 지워나가기
  • 괄호의 종류가 여러 개면 복잡해짐
  • 배열로 구현 -> O(N^2)
  • 연결 리스트로 구현 -> O(N)

    스택으로 구현:
    문자열을 앞에서부터 읽어나갈 때, 닫는 괄호는 남아있는 괄호 중에서 가장 최근에 들어온 여는 괄호와 짝을 지어 없애버리는 명령이라고 생각해도 된다.

문제 해결 방법

  1. 여는 괄호가 나오면 스택에 추가
  2. 닫는 괄호가 나왔을 경우,
    2-1. 스택이 비어 있으면 올바르지 않은 괄호 쌍
    2-2. 스택의 top이 짝이 맞지 않는 괄호일 경우 올바르지 않은 괄호 쌍
    2-3. 스택의 top이 짝이 맞는 괄호일 경우 pop
  3. 모든 과정을 끝낸 후 스택에 괄호가 남아 있으면 올바르지 않은 괄호 쌍,
    남아있지 않으면 올바른 괄호 쌍
profile
Grow up everyday

0개의 댓글