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):
arr1 = [']', ')', '}'] # 닫힌 괄호
arr2 = ['[', '(', '{'] #열린 괄호
li = []
# 처음부터 틀린경우
if string[0] in arr1 or len(string) % 2 == 1 or string[-1] in arr2:
return False
# string요소 하나하나를 돌면서 확인 할 거임
for i in range(len(string)): # 스트링 길이만큼 돔
if string[i] in arr2: # i번째 인덱스의 요소기 열린 괄호면
li.append(string[i]) # 리스트에 추가해
else: # i번째 인덱스의 요소가 닫힌 괄호면
if arr2.index(li[-1]) == arr1.index(string[i]): # 열려있는거 추가된 리스트에 있던 괄호를 arr2에서 찾아서 닫혀있는 괄호 즉,새로 들어온 애랑 비교해
li.pop() # 같으면 리스트에서 삭제
else:
return False
return True
.index('찾고 싶은 string')
원하는 요소의 인덱스 구할 수 있음.
- Return 값 어디에 넣을지 잘 생각.
return을 만나면 조건문이든 반복문이든 그 문장은 끝나게 된다.