#문제링크
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
#나의풀이
import sys
if __name__ == '__main__':
expression = sys.stdin.readline()
arr = expression.split('-')
result = 0
for number in arr[0].split('+'):
result += int(number)
for i in range(1, len(arr)):
tmp = arr[i].split('+')
value = 0
for number in tmp:
value += int(number)
else:
result -= value
print(result)
#해설
식에서 가장 최소값을 만들려면 +를 괄호로 묶어 전부 -값으로 바꿔주면 된다.
문제에서 주어진 55-50+40인 경우 55 - (50 + 40)을 해주면 55 - 90이 되고 -35가 된다.
입력을 받고 전부 -로 split으로 나눠준다 이후 0번째 인덱스를 제외한 다른 인덱스는 따로 계산을 하고 각각 빼줄것이다.
(55 - 50 + 40인 경우 [55, 50+40]으로 나뉘게 된다.)
2번째 예제를보면 10+20+30+40인데 위 식을 따라가면 0번째 인덱스값이 10+20+30+40이 된다 따라서 이를 분할해서 값에 넣어줘야한다. 0번째값은 식의 특성상 -일 수가 없기때문에 +를 split 해주고 각각 더해 result에 초기값으로 잡아주었다.
0번째는 위에서 해결했으니 반복문은 1번째 인덱스부터 접근해 +로 split해주고 각 값을 전부 더해 result에서 빼주었다.
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 16506 CPU (0) | 2022.06.16 |
---|---|
[백준/파이썬] 3568 iSharp (0) | 2022.06.16 |
[백준/파이썬] 1260 DFS와 BFS (0) | 2022.06.15 |
[백준/파이썬] 11727 2xn 타일링2 (0) | 2022.06.13 |
[백준/파이썬] 11726 2xn 타일링 (0) | 2022.06.13 |