20. Valid Parentheses

hs·2021년 8월 29일
3

Leetcode

목록 보기
2/4

🎰 문제

괄호들로 이루어진 String인자 S가 유효한 표현인지 아닌지 True/False로 리턴해주세요
유효하다는 것은 (), {}, [] 이러하듯 괄호 순서에 맞게 잘 닫혔는지를 판단하는 것입니다.

🧩 생각

열린 괄호가 있으면 그 숫자와 동일한 닫는 괄호가 있으면 된다고만 생각했다. 하지만 그렇게 할 경우 {[}] 이러한 유효하지 않은 괄호도 통과가 되어버리는 문제가 발생을 했다.

🧩 풀기

  1. 반복문을 돌려 증가하는 인덱스에 맞는 값이 여는 괄호이면 새롭게 선언한 리스트에 추가를 해주었다.
  2. 닫는 괄호일 경우에는 마지막에 추가된 값이 같은 종류의 괄호인지를 체크하고 맞으면 continue, 틀리면 False 값을 리턴하였다.
  3. 그외의 값들은 False임으로 else로 false선언
  4. 모두 여는 괄호였을 경우 리스트에 추가만됨으로 마지막에 리턴전에 리스트에 값이 남아있으면 False리턴

🎯 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution:
    def isValid(self, s: str-> bool:
      li = []
        
      for i in s:
 
        if i == '(' or i =='{' or i =='[':
          li.append(i)
 
        elif li:
          c = li.pop()
          if i == ')':
            if c == '(':
              continue
            else:
              return False
 
          elif i == '}':
            if c == '{':
              continue
            else:
              return False
 
          elif i == ']':
            if c == '[':
              continue
            else:
              return False
        else:
            return False
      if len(li):
        return False
    
      return True
cs

코드가 조금 간결하지 못한 것 같다. 혹여나 좀 더 간단하거나 고쳐 쓸 수 있는 부분이 있다면 지적해주시면 감사하겠습니다.

profile
무엇이든 끝까지 보람차게

0개의 댓글