백준 - 9012 괄호

타마타마·2024년 8월 22일
0

문제정리노트

목록 보기
3/5

💡문제 분석 요약

  1. Stack 사용
  2. ( 괄호와 ) 괄호의 짝이 맞는지 확인

💡알고리즘 설계

  1. 리스트로 구현하는 것이 아닌, stack 으로 구현할 것
  2. ( 인경우 stack 에 쌓고, stack에 ( 이 있는 상태에서 ) 가 들어오면 (를 제거.
  3. ( 가 없는데 )를 stack 에 넣으려고 한다면, 해당 반복문을 다시 돌지 말고(break) 바로 NO 출력

💡코드

n = int(input())

for _ in range(n) :
  text = input()
  stack = []
  for i in text:
    if i == '(' :
      stack.append("(")
    elif i == ')':
      if len(stack) == 0:
        stack.append(")")
        break
      else :
        stack.pop()

  if len(stack) == 0:
    print("YES")
  else :
    print("NO")

💡시간복잡도

O(n * text길이)

💡 틀린 이유

처음을 while로 구현하려다가 컴파일 에러 발생
그래서 그냥 for문으로 변경하여 사용

💡 틀린 부분 수정 or 다른 풀이

리스트로 충분히 구현할 수 있는 문제.
짝을 맞추는건 스택을 활용하자.

💡 느낀점 or 기억할정보

항상 테스트 코드는 맞는데, 시간 복잡도라던지 다른 케이스에서 틀리는건지 오류가 발생할 때가 있다.. 더 분발해야겠지

0개의 댓글