[Baekjoon] - 1541. 잃어버린 괄호(S2)

오동훈·2022년 1월 23일
0

Baekjoon

목록 보기
27/58
post-thumbnail

1. Problem 📃

📚 출처 - 1541 - 잃어버린 괄호

문제 설명
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.

출력
첫째 줄에 정답을 출력한다.

입출력 예

예제 입력예제 출력
55-50+40-35
10+20+30+40100
00009-000090

2. Logic 👨‍🏫

처음에는 문제를 제대로 읽지 않아 입력으로 들어오는 값을 계산만 하면 되는 줄 알았다.
그래서 아래의 코드와 같이 구분자를 포함해 split을 진행했고 그대로 계산했지만 문제를 잘못 읽었으므로 당연히 실패!!

그래서 다시 읽어보니 임의의 괄호를 쳐 가장 최솟값을 나오게 해야 되는데, +의 값들은 다 더해주고 -값이 나오게 되면 그 값을 그대로 빼주면 최솟값이 나오게 된다.

Logic 1
1. -를 이용해 split을 진행해준다.
그렇게 되면 80, 80+10 이런식으로 -를 제외한 값이 남게 된다.
2. 위의 값을 이용해 초기 값 0번 째 값만 더해 주고, -가 나오는 뒤의 값부터는 모두 빼주면 최솟값이 나오게 된다.

3. Code 💻

1. 내가 푼 코드 😁

exp = input().split('-')
ans = 0
for i in exp[0].split('+'): 
    ans += int(i)
for i in exp[1:]:
    for j in i.split('+'):
        ans -= int(j)
print(ans)
profile
삽질의 기록들🐥

0개의 댓글