728x90
https://www.acmicpc.net/problem/1541
expression = input()
num = ''
number = []
op = []
for ch in expression:
if ch == '+' or ch == '-':
op.append(ch)
number.append(int(num))
num = ''
else:
num += ch
else:
number.append(int(num))
for i in range(1, len(number)):
if op[i - 1] == '-' or number[i - 1] < 0:
number[i] = -number[i]
print(sum(number))
주어진 식에서 괄호를 적당히 쳐서 가장 작은 값으로 만들면 되는 문제이다.
처음에는 마이너스 기호가 나온 이후 플러스 기호가 나오면 같은 괄호로 묶어주고, 마이너스 기호가 나오면 새로운 괄호를 설정해주는 방식으로 접근했다.
근데 머리가 안돌아가서 다 지우고 다시 작성했다.
숫자와 기호로 나눈이후 맨 처음 값을 제외하고는 플러스, 마이너스값이 정해져있다.
마이너스 값이 나온 이후의 플러스값은 괄호로 묶여서 더 큰값으로 빼주게 된다.
이 부분을 다시보니 마이너스 값이 나온 이후에는 다 마이너스 값으로 설정해도 된다고 생각이 들었다.
첫번째 값은 항상 양수이므로 반복문을 1부터 시작하고,
마이너스 기호가 나오거나 바로 이전 값이 음수인 경우 다 음수값으로 붙여주었더니 성공하였다.
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 2671 잠수함 식별 python (3) | 2021.05.30 |
---|---|
[백준] 2670 연속부분 최대곱 python (0) | 2021.05.30 |
[백준] 2668 숫자고르기 python (0) | 2021.05.20 |
[백준] 9466 텀 프로젝트 python (0) | 2021.05.18 |
[백준] 1992 쿼드트리 python (0) | 2021.05.18 |