본문 바로가기
백준 알고리즘/기타

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

by 웅대 2023. 2. 27.
728x90
반응형

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

식은 +와 -로만 이루어져있고 괄호를 적절히 쳐서 최소값을 구하는 문제이다.

 

즉 식을 뺄 때는 괄호를 적절히 쳐서 최대한 큰 값을 빼야한다.

 

50 + 40 - 30 + 40 +20 - 10 + 20

 

위와 같은 식이 있다고하자.

 

식에서 -가 나오면 그 값부터 다시 - 가 나오거나 식의 끝까지 괄호를 치면 된다.

 

50 + 40 - (30 + 40 +20) - (10 + 20)

 

파이썬의 경우 문자열의 split 메소드를 사용하면 이를 구현하기가 쉽다.

 

'-' 문자를 기준으로 한 번 나누면 

 

50+40

 

30+40+20

 

10+20

 

위와 같이 나누어지고 모두 빼면 된다.

 

<최종 코드>

import sys
input=sys.stdin.readline
expression = input().rstrip().split('-')
res=0
if expression[0].isdigit():
    res=int(expression[0])
else:
    res=sum(list(map(int, expression[0].split('+'))))
for i in range(1, len(expression)):
    if expression[i].isdigit():
        res-=int(expression[i])
    else:
        res-=sum(list(map(int, expression[i].split('+'))))
print(res)
728x90
반응형

댓글