알고리즘 문제 풀이
[백준 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 기억할 정보
어려워보였는데 생각보다 잘풀렸다. 처음 숫자가 음수가 나오는 경우가 있을 줄 알고 음수인 경우와 양수인 경우를 따로 체크했는데 문제를 다시 읽어보니 처음 숫자는 무조건 양수라 그런 코드가 필요가 없었다. 문제 제대로 읽기