알고리즘/백준

[백준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)