Loading...
DilianaS avatar DilianaS 3 Точки

5. Balanced Brackets -> Python

Здравейте колеги,

имам затруднения с 5-та задача от допълнителните към темата Data Types and Variables. Ако може да ми дадете някоя насока в коя посока на мислене да тръгна?

Благодаря предварително, Диляна

 

 

1.   Balanced Brackets

You will receive n lines. On those lines, you will receive one of the following:

  • Opening bracket – “(“,
  • Closing bracket – “)” or
  • Random string

Your task is to find out if the brackets are balanced. That means after every closing bracket should follow an opening one. Nested parentheses are not valid, and if two consecutive opening brackets exist, the expression should be marked as unbalanced.

Input

  • On the first line, you will receive – the number of lines, which will follow
  • On the next lines, you will receive “(”, “)” or another string

Output

You have to print “BALANCED”, if the parentheses are balanced and “UNBALANCED” otherwise.

Constraints

  • will be in the interval [1…20]
  • The length of the stings will be between [1…100] characters

Examples

Input

Output

 

Input

Output

8

(

5 + 10

)

* 2 +

(

5

)

-12

BALANCED

 

6

12 *

)

10 + 2 -

(

5 + 10

)

 

UNBALANCED

 

0
Fundamentals Module
MartinBG avatar MartinBG 4803 Точки

Две примерни решения на проблема:

lines = int(input())

is_balanced = True
last_bracket = ''
for _ in range(0, lines):
    current = input()
    if current not in ['(', ')']:
        continue

    if last_bracket == '' and current == ')' or last_bracket == current:
        is_balanced = False
        break

    last_bracket = current

if is_balanced:
    print('BALANCED')
else:
    print('UNBALANCED')
lines = int(input())

is_balanced = True
has_open_bracket = False

for _ in range(0, lines):
    line = input()
    if line != '(' and line != ')':
        continue
        
    is_open_bracket = line == '('
    if has_open_bracket == is_open_bracket:
        is_balanced = False
        break
        
    has_open_bracket = is_open_bracket
    
if is_balanced:
    print('BALANCED')
else:
    print('UNBALANCED')

 

0
02/02/2021 21:29:47
astankin avatar astankin 5 Точки
n = int(input())
balanced = 0
for i in range(n):
    string = input()
    if string == "(":
        balanced += 1
        if balanced > 1:
            print("UNBALANCED")
            exit()
    elif string == ")":
        balanced -= 1
if balanced == 0:
    print("BALANCED")
else:
    print("UNBALANCED")

Ето и моето решение.

 

0
roodnb avatar roodnb 0 Точки

Вашето решение е доста ясно, но не изпълнява едно условие и то е ,че не може първата скоба да е затваряща.
Добавих още 2 реда към вашия код.

 

n = int(input())
balanced = 0
first_bracket = ''
for i in range(n):
    string = input()
    if string == "(":
        balanced += 1
        if balanced > 1:
            print("UNBALANCED")
            exit()
    if string == ")":
        balanced -= 1
    if string == ')' and first_bracket == '':
        print("UNBALANCED")
        exit()
if balanced == 0:
    print("BALANCED")
else:
    print("UNBALANCED")

Поздрави :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.