올바른 괄호_py

오찬주·2024년 11월 23일

ALGORITHM

목록 보기
7/12
post-thumbnail

쨔쟌 !
올바른 괄호인지 아닌지 판단하는 문제다.
이 문제는스택과 큐를 활용하면 풀기 쉽다 !

스택과 큐?

스택(stack)
스택은 후입선출 즉, 나중에 들어온게 먼저 빠지는거다 !!
LIFO (Last In First Out)

💁🏻‍♀️ 스택을 어디서 활용할 수 있는데?

  • 웹브라우저 방문 기록 (뒤로 가기) : 가장 나중에 열린 페이지부터 보여줌 !
  • 실행취소(undo): 가장 나중에 실행된 것부터 취소!

큐(queue)
큐는 선입선출 즉, 먼저 들어온게 먼저 빠지는거다 !!
FIFO (First In First Out)

💁🏻‍ 큐를 어디서 활용할 수 있는데?

  • 우선 순위가 같은 작업 예약 (프린터의 인쇄 대기열)
  • 너비 우선 탐색
  • 캐시(cache) 구현

이제 이 스택과 큐를 활용해서 이 문제를 풀 수 있는데, 그 플로우는 다음과 같다

  1. 문자열 s를 순서대로 입력하는데 처음에 '(' 모양이면 stack에 저장한다 (append로!)
  2. 만약 ')'가 들어온다면 stack이 비었는지 확인한다! (len()으로!)
    만약 비어있다면 False를, 비어있지 않다면 stack에 들어있던 아이를 뺀다. ('('가 들어있을 것이다. 그러면 이걸 pop해준다!)
  3. 나중에 stack의 길이가 0이면 True를, 아니라면 False를 출력한다.

이를 코드로 짜면

def solution(s):
  stack=[]
  
  for i in range(len(s)):
    if s[i] == "(" :
      stack.append("(")
    else:
      if len(stack) == 0:
        return False
      else: stack.pop()
  
  if len(stack)==0 : return True
  else: return False

이렇게 풀 수 있다 !!!

문제만 보고 이걸 스택과 큐를 활용하면 되겠다!! 가 되려면 .. 더 열심히 풀어야겠단 ...


참고글

profile
프론트엔드 엔지니어를 희망합니다 :-)

0개의 댓글