문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
예제 입력 1 복사
55-50+40
예제 출력 1 복사
-35
예제 입력 2 복사
10+20+30+40
예제 출력 2 복사
100
예제 입력 3 복사
00009-00009
예제 출력 3 복사
0
문제 요약
식이 주어지면 괄호를 통해 최솟값을 만드는 값
접근 방식
최소 값을 만들기 위해서는 - 값이 있으면 그때부터 괄호로 모든 값을 더하면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
equation = input()
minusStart = False
number = ""
result = 0
for c in equation:
if c >= '0' and c<='9':
number += c
continue
if number:
if minusStart:
result -= int(number)
else:
result += int(number)
if c == '-':
minusStart = True
number = ""
if minusStart:
result -= int(number)
else:
result += int(number)
print(result)
|
'알고리즘 문제 > 백준' 카테고리의 다른 글
알고리즘 - 10828 스택 (0) | 2022.10.02 |
---|---|
알고리즘 - 13305 주유소 (0) | 2022.10.02 |
알고리즘 - 11399 ATM (0) | 2022.10.02 |
알고리즘 - 1931 회의실 (0) | 2022.10.02 |
알고리즘 - 11047 (동전 0) (0) | 2022.10.01 |