본문 바로가기
코딩테스트/파이썬

[백준] 잃어버린 괄호 1541 (파이썬)

by 커피는아아 2021. 3. 16.
반응형

스케치

코드

  • 문제를 잘 이해하지 못하였다. 0부터 시작할 수 있다라는 문구가 003 002가 될 수 있다는 말로 전혀 생각못했다.
  • 백준 문제풀이 예제가 너무 불친절 한 것 같다...
# 잃어버린 괄호
# 최소로 만드려면 -가 등장하면 괄호를 열고 -가 또 등장하면 괄호를 닫는다.
# 파이썬 eval() 사용한다.

#수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
# 03 04 05 설명이 부족하다...


# 실패코드 001 002 등을 고려하지 않음
expression = list(input())
check = True # (를 입력해야 하는 상태
for i in range(len(expression)):
    if expression[i] == '-':
        if check:
            expression[i] = '-('
            check = False
        else:
            expression[i]= ')-('

# 반복문이 끝났는데 check가 false 이면 괄호가 덜 닫혔다는 얘기이므로 괄호를 닫아준다.
expression[-1] = expression[-1] + ')'

if not check:
    expression += ')'

ans = ''.join(expression)

print(eval(ans)) # 001 002 03 때문에 이곳에서 SyntaxError 가 난다.


### 2차
exp = input().split('-')
total = []
for x in exp:
    temp_sum = 0
    y = x.split('+')
    for z in y:
        temp_sum += int(z)
    total.append(temp_sum)
ans = total[0]
for i in range(1, len(total)):
    ans -= total[i]
print(ans)