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 기억할 정보
어려워보였는데 생각보다 잘풀렸다. 처음 숫자가 음수가 나오는 경우가 있을 줄 알고 음수인 경우와 양수인 경우를 따로 체크했는데 문제를 다시 읽어보니 처음 숫자는 무조건 양수라 그런 코드가 필요가 없었다. 문제 제대로 읽기
'알고리즘 문제 풀이' 카테고리의 다른 글
[백준 1012번] 유기농 배추 - 파이썬 (0) | 2024.02.23 |
---|---|
[백준 6603번] 로또 - 파이썬 (0) | 2024.02.17 |
[백준 16967] 배열 복원하기 - 파이썬 (0) | 2024.02.10 |
[백준 11724] 연결 요소의 개수 - 파이썬 (0) | 2024.02.10 |
[백준 11478번] 서로 다른 부분 문자열의 개수 - 파이썬 (0) | 2024.02.03 |