반응형
https://www.acmicpc.net/problem/1541
문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
풀이
가장 작은 값을 가지기 위해서는 가장 큰 값을 빼야하기 때문에 +를 묶어서 한번에 -해준다.
정수로 변환하기 위해 try except문을 사용하였다
코드
# 1541 잃어버린 괄호
# '-'를 기준으로 나누어 입력받는다
num = list(map(str,input().split('-')))
# print(num)
# 최종적으로 빼지는 수들이 들어올 리스트
arr = []
for i in range(len(num)):
# 만약 list 안에 수가 정수로 변환이 가능하다면 arr 리스트로 들어오고
# +를 포함한 문자라 변환이 되지 않을 경우 except로 이동한다
try:
arr.append(int(num[i]))
except:
add_ans = 0
add = []
add += num[i].split('+')
# +를 기점으로 수를 더해준다
for j in add:
add_ans += int(j)
# print(j)
# 더해진 수를 arr 리스트로 보낸다
arr.append(int(add_ans))
# 최종적으로 arr 리스트에 있는 수들을 모두 빼준다.
ans = arr[0]
for i in range(1,len(arr)):
ans -= arr[i]
print(ans)
반응형
'study > 백준' 카테고리의 다른 글
[백준] 1476. 날짜 계산 (0) | 2022.06.18 |
---|---|
[백준] 10974. 모든 순열 : python (0) | 2022.06.15 |
[백준] 11399. ATM : python (0) | 2022.06.12 |
[백준] 17478. 재귀함수가 뭔가요? : python (0) | 2022.06.10 |
[백준] 9655. 돌 게임 : C++ (0) | 2022.03.16 |