Code Kata (4째주 수요일)

Daehwi Kim·2020년 6월 17일
0

문제

s는 여러 괄호들로 이루어진 String 인자입니다.
s가 유효한 표현인지 아닌지 true/false로 반환해주세요.

종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다.
아래의 경우 유효합니다.
한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다.
괄호 순서가 맞아야 한다.

예를 들어 아래와 같습니다.

s = "()"
return true

s = "()[]{}"
return true

s = "(]"
return false

s = "([)]"
return false

s = "{[]}"
return true
  • 문제는 이해 했으나, 풀지도 못하였고 정답을 이해하지 못하였다. 시간이 될때 다시한번 보면서 이해해봐야겠다.

solution 1

def is_valid(string):
  a = string
  for i in range(len(string)):
  	x = ['()', '[]', '{}']
  	for j in x:
  	  a = a.replace(j, '')
  if a == '':
  	return True
  else:
  	return False

solution 2

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
profile
게으른 개발자

0개의 댓글