문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
- 첫째 줄에 식이 주어진다.
- 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다.
- 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다.
- 수는 0으로 시작할 수 있다.
- 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
- 첫째 줄에 정답을 출력한다.
풀이
- 괄호를 쳐서 값을 최소로 만들려면
-
가 나오는 뒤 부분을 모두 묶어주면된다. 결국+
와 상관없이-
부호 뒤에 괄호를 계산한 값이 커져야 전체 식이 최소가 될 수 있다.
- 따라서 이 문제는
-
를 기준으로 나누는 것
- 문자를 숫자로 잘 변환해주는 것
두개가 핵심이라고 할 수 있다.
설명
- 받은 수식을
-
와+
를 기준으로 나눈다. ⇒replace
&split
활용
- 나눠진 배열을 돌면서
-
가 나오는 순간부터 뒤는 괄호로 묶는다는 의미로-1
을 곱해서 더해준다.
답
from sys import stdin input = stdin.readline def missing_parentheses(e): ret = 0 e = e.replace('-', ' - ').replace('+', ' ') flag = 1 for i in e.split(): if i == '-': flag = -1 continue ret += int(i)*flag return ret if __name__=="__main__": expression = input().strip() res = missing_parentheses(expression) print(res)
Uploaded by Notion2Tistory v1.1.0