알고리즘/백준
[백준1541] 잃어버린 괄호 (with Python / 그리디)
baegopeunGom
2023. 7. 18. 23:50
문제링크
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
문제설명
문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
예제 입력
55-50+40
예제 출력
-35
문제풀이
코드
arr = input().split("-")
sum = 0
# input값이 100-40+50+74-30+29-45+43+11 이라면
# arr = [100, 40+50+74, 30+29, 45+43+11]
# 0번째 인덱스에 존재하는 문자열도 +가 들어있을 수 있는 문자열임.
# 따라서 +기점으로 분리하여 각 숫자의 총합 구한다.
for item in arr[0].split("+"):
sum += int(item)
# arr의 1번째 인덱스부터 마지막 원소까지 반복.
# 각 인덱스의 문자열을 +기준으로 split시킨 배열 순회.
# 그리고 sum에서 그 값들을 전부 뺀다. => 최솟값.
for str in arr[1:]:
for item in str.split("+"):
sum -= int(item)
print(sum)