문제
- 양수와 +, - , 그리고 괄호를 가지고 식을 만들었는데 괄호를 모두 지웠다.
- 괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 문제이다.
- 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있다.
- 가장 처음과 마지막 문자는 숫자이다.
- 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다.
- 수는 0으로 시작할 수 있다.
- 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
알고리즘
- 식을 입력받는다. 이때, '-' 기준으로 나누어 입력받는다.
- 반복문을 통해 '+' 기준으로 있는 식을 더해주어 리스트에 담는다.
- 리스트에 들어간 수들을 순서대로 빼준다.
코드
# 입력 값을 '-' 기준으로 나누어준다.
m = input().split('-')
result = []
num = 0
for i in m:
# 입력 값중에서 '+' 들어간 식은 '+'기준으로 나누어 변수에 넣는다.
a = i.split('+')
# '+'식이였던 수를 더해주기 위해.
for j in a:
num += int(j)
# 더한값은 결과 리스트에 추가한다.
result.append(num)
# 더한 후 초기화
num = 0
# 첫 번째값 대입
b = result[0]
# 마지막은 남은 모든 값을 순서대로 빼준다.
for k in range(1,len(result)):
b -= result[k]
print(b)
결과
위 코드에서 밑에 반복문 위에 print(result)를 작성하게 되면 '+' 식이 있는 수들이 더해져 리스트에 담겨 있는 것을 출력 화면과 같이 확인할 수 있다.
위 출력 화면을 보게 되면 '+' 식이 없었던 55와 '+'식이 있는 50과 40을 더한 값인 90이 리스트에 담겨 있는 것을 확인할 수 있다. 따라서 '+'가 있는 식을 먼저 괄호로 처리해주고 마지막에 '-' 처리를 하게 되면 식의 최솟값을 만들 수 있다.
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1946번(파이썬): 신입 사원 (0) | 2021.05.22 |
---|---|
[baekjoon] 백준 2437번(파이썬): 저울 (0) | 2021.05.21 |
[baekjoon] 백준 2839번(파이썬): 설탕 배달 (0) | 2021.05.20 |
[baekjoon] 백준 4796번(파이썬): 캠핑 (0) | 2021.05.20 |
[baekjoon] 백준 5585번(파이썬): 거스름돈 (0) | 2021.05.13 |