algorithm | February 18, 2020
'(', ')', '[', ']', '{', '}' 총 6개 종류의 괄호 조합을 string으로 받는다.
1) 한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다.
2) 괄호 순서가 맞아야 한다.
위의 두 가지 조건을 만족하는지 True/False를 반환하라.
{{}}[]
’ 이런 형태의 괄호들은 함수 2가지의 경우가 섞여 있어서 True로 걸러낼 수 없다.def is_valid(string):
if (string.count('(') == string.count(')')) and (string.count('[') == string.count(']')) and (string.count('{') == string.count('}')):
string = string.replace(')', '(')
string = string.replace(']', '[')
string = string.replace('}', '{')
else:
return False
def check1(string):
for i in range(len(string)//2):
if string[i] != string[-1-i]:
return False
return True
def check2(string):
for index, char in enumerate(string[:len(string)-1:2]):
if char != string[index+1]:
return False
return True
return check1(string) or check2(string)
def is_valid(string):
left = ['(', '{', '[']
right = [')', '}', ']']
stack = []
for letter in string:
if letter in left:
stack.append(letter)
elif letter in right:
if len(stack) <= 0:
return False
if left.index(stack.pop()) != right.index(letter):
return False
return len(stack) == 0