📜 접근 방법
주어진 식에 적절하게 괄호를 넣어야한다.
조건1. 식의 값을 최소로 만들어야한다.
조건2. 식은 0~9, +, - 로만 이루어져 있다.
식의 값을 최소로 만들기 위해선 -하는 값을 최대로 만들어주면 된다.
그러기 위해선, -를 기준으로 그 다음 -가 나오기 전까지, 뒤에 +인 값들을 다 더한 후 빼주면 최소값이 된다.
즉, 괄호는 -하는 부분부터 그다음 -하기 전까지 넣어주면 된다.
ex)
괄호 전 : 35+35-34+21-46+34+43-45
괄호 후 : 35+35-(34+21)-(46+34+43)-(45)
문제 푼 방법
1. 식을 "-"를 기준으로 나누어준다.
2. 나눈 것을 "+"가 있을 경우 모두 더한 후 빼준다.
3. 반복
그러나 가장 처음 문자는 숫자이기에 "+"해줘야하므로 if문으로 따로 빼줬다.
❌ 실패 이유
맨 처음 값의 경우 +로 나오기 때문에(문제 조건이 그렇다.) 그 부분을 따로 빼줘야했다.
✅ 정답 코드
import sys
def plus_split(form):
res = 0
num_list = []
num_list = form.split("+")
for i in range(len(num_list)):
res += int(num_list[i])
return res
s = sys.stdin.readline().strip()
res = 0
form = []
form = s.split("-")
for i in range(len(form)):
tmp = plus_split(form[i])
if i == 0:
res += tmp
else:
res -= tmp
print(res)
'코딩테스트 > Python' 카테고리의 다른 글
[python 백준 3107] IPv6 (0) | 2023.03.13 |
---|---|
[python 백준 1715] 카드 정렬하기 (0) | 2023.02.04 |
[python 백준 7662] 이중 우선순위 큐 (1) | 2023.01.29 |
[python 백준 1439] 뒤집기 (0) | 2023.01.25 |
[python 백준 9358] 순열 접기 게임 (0) | 2023.01.17 |