[BaekJoon] 백준 4949번 : 균형잡힌 세상

Updated:

4949번 : 균형잡힌 세상


[Programmers] 올바른 괄호 와 비슷한 문제인데 괄호의 종류가 두 개로 늘었다.

똑같이 스택에 넣어주며 닫히는 괄호가 나오면 스택의 top 부분과 비교하며 연산하면 된다.

소괄호가 왔을때 top 부분에도 소괄호가 있어야 하고 대괄호가 왔을때 top 부분에도 대괄호가 있어야 한다.

또 모든 연산을 마쳤을 때 스택이 비어있어야 한다.


def check_balance(_str):
	_stack = []
	output = 'yes'

	for i in _str:
		if i == '(' or i == '[':
			_stack.append(i)

		elif i == ')':
			if not _stack:
				output = 'no'
				break
			if _stack[-1] == '(':
				_stack.pop()
			else:
				output = 'no'
				break

		elif i == ']':
			if not _stack:
				output = 'no'
				break
			if _stack[-1] == '[':
				_stack.pop()
			else:
				output = 'no'
				break

	if _stack:
		output = 'no'

	return print(output)


input_str = []
while True:
	tmp = input()
	if tmp == '.':
		break
	else:
		input_str.append(tmp)

for val in input_str:
	check_balance(val)

Categories:

Updated:

Leave a comment