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

resilient

·

2021. 6. 10. 11:50

728x90
반응형

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

  • 모든 문제를 읽을 때, 마지막에 최솟값을 구하는지, 최댓값을 구하는지를 잘 살펴봐야한다.
  • 이 문제는 최솟값을 구하라고 하였는데, +와 - 밖에 없다.
  • 그러면? 처음 - 뒤에 모든 값을 빼주면 되는 것이다. 
  • 먼저 출력을 결과값을 ans =0으로 초기화 해주고 괄호의 먼저 계산하는 특징을 이용해서, - 뒤에는 ans에서 다 -를 시켜주면된다. - 앞에는 일단 더해야 하기 때문에 +를 해주면 된다.
  • 여기서 핵심은 입력값이 문자열로 주어지기때문에, 파싱을 하고 int 값을 씌우면 무조건 양수라는 점이다. 그렇기 때문에 음수,양수를 신경쓰지 않고 위에 설명한대로 -, 혹은 + 를 해주면 된다.
import sys
input = sys.stdin.readline
data = input().split('-')
ans = 0
#-가 처음으로 나올 때까지  - 앞에 숫자들은 다 더해준다. 
for i in data[0].split('+'):
    ans += int(i)
# - 가 나온 뒤로는 -가 나오거나,
# + 가 나와도 어차피 괄호로 - 처리 해주면 되기 때문에 값을 다 빼준다.(최솟값이 나와야함)
for i in data[1:]:
    # - 처리는 안해줘도 된다 어차피 맨 앞에서 -로 끊어서 이미 다 양수처리
    for j in i.split('+'):
        ans -= int(j)
print(ans)
 
반응형