문제
- s는 여러 괄호들로 이루어진 String 인자입니다. s가 유효한 표현인지 아닌지 true/false로 반환해주세요.
종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다. 아래의 경우 유효합니다.
한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다. 괄호 순서가 맞아야 한다.
- 예를 들어 아래와 같습니다.
s = "()"
return true
s = "()[]{}"
return true
s = "(]"
return false
s = "([)]"
return false
s = "{[]}"
return true
def is_valid(string):
a1 = ['(','{','[']
a2 = [')','}',']']
temp =[]
if len(string) <= 1:
return False
for i in string:
if i in a1:
temp.append(i)
elif i in a2:
if len(temp) < 1:
return False
elif a1.index(temp.pop()) != a2.index(i):
return False
return True
#a1의 인덱스와 a2의 인덱스를 서로 비교해주면서 문제를 풀어나가는 형식.
#먼저, 배열이 2이상이어야 하니까 초기값으로 지정해준다.
#a1과 a2에서 하나씩 꺼내 temp에 넣어준다. a1에서 가져온 값의 인덱스와 a2에서 가져온 값의 인덱스가 다르면 False가 나오고 그렇지 않다면 괄호의 순서가 맞게 되는 것이니까 True로 출력해주는 것이다.