개발 공부 기록

나는 무엇을 하는가?

알고리즘 문제 풀이

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

진!!!!! 2024. 2. 17. 21:25

https://www.acmicpc.net/problem/1541

💡문제 분석 요약

식에서 괄호를 적절히 쳐서 식의 값을 최소로 구하라.

 

55-50+40은 55-(50+40)으로 만들어 -45가 된다.

💡알고리즘 설계

1. 식을 입력받는다 -> 55-50+40

2. '-'를 기준으로 식을 분할한다. -> 55-(50+40)

2. 나누어진 식을 '+'을 기준으로 나누고, + 연산을 한다. -> 55-(90)

3. + 연산이 끝난 숫자를 sum에서 뺀다. -> -45

 

처음 나오는 숫자는 음수가 아니라 양수이므로 덧셈을 한다.

 

💡코드

import sys
input = sys.stdin.readline

expression=input().rstrip()

numbers=expression.split('-')
result=0

numbers2=numbers[0].split('+')
sum=0

for j in numbers2:
    sum+=int(j)
result+=sum

for i in range(1, len(numbers)):
    numbers2=numbers[i].split('+')
    sum=0
    for j in numbers2:
        sum+=int(j)
    result-=sum

print(result)

💡시간복잡도

- 로 분할: n

+로 분할 후 한글자씩 연산: n

 

💡 느낀점 or 기억할 정보

어려워보였는데 생각보다 잘풀렸다. 처음 숫자가 음수가 나오는 경우가 있을 줄 알고 음수인 경우와 양수인 경우를 따로 체크했는데 문제를 다시 읽어보니 처음 숫자는 무조건 양수라 그런 코드가 필요가 없었다. 문제 제대로 읽기