https://www.acmicpc.net/problem/1541
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
첫째 줄에 정답을 출력한다.
식의 값을 최소로 만들기 위해서 '-'를 기준으로 자른다.
'-'를 기준으로 자른 값들을 다 더해서 처음 값에서 계속 빼주면 된다.
data = list(input().split('-')) result = 0 if len(data) == 1: #'-'가 없는 경우 data = data[0].split("+") #'+'를 기준으로 다 잘라서 더함 result += sum(map(int, data)) else: #'-'가 있는 경우 #data[0]이 한 숫자가 아닌 경우 '+'를 기준으로 잘라서 더함 result += sum(list(map(int,data[0].split("+")))) for i in range(1, len(data)): if "+" in data[i]: #'+'가 있는 경우 잘라서 더한 값을 빼줌 result -= sum(list(map(int, data[i].split("+")))) else: #'+'가 없는 경우 그냥 빼줌 result -= int(data[i]) print(result)
=>'-'가 없는 경우를 생각하지 않음
data = list(input().split('-')) result = int(data[0]) for i in range(1, len(data)): if "+" in data[i]: result -= sum(list(map(int, data[i].split("+")))) else: result -= int(data[i]) print(result
=>data[0]이 '+'나 '-'가 있는 경우를 생각하지 않음
=>ex)data[0]=22+40 이면 7번째 줄에서 result+=int(data[0])이 성립하지 않음
data = list(input().split('-')) result = 0 if len(data) == 1: data = data[0].split("+") result += sum(map(int, data)) else: result += int(data[0]) for i in range(1, len(data)): if "+" in data[i]: result -= sum(list(map(int, data[i].split("+")))) else: result -= int(data[i]) print(result)