[Baekjoon] - 1541. 잃어버린 괄호(S2)
1. Problem 📃
📚 출처 - 1541 - 잃어버린 괄호
문제 설명
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력
첫째 줄에 정답을 출력한다.
입출력 예
예제 입력 | 예제 출력 |
---|---|
55-50+40 | -35 |
10+20+30+40 | 100 |
00009-00009 | 0 |
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)
Author And Source
이 문제에 관하여([Baekjoon] - 1541. 잃어버린 괄호(S2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@odh0112/Baekjoon-1541.-잃어버린-괄호S2
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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)
Author And Source
이 문제에 관하여([Baekjoon] - 1541. 잃어버린 괄호(S2)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@odh0112/Baekjoon-1541.-잃어버린-괄호S2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)