[백준/파이썬] 1541 잃어버린 괄호

#문제링크

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