알고리즘/프로그래머스
(파이썬) 프로그래머스 - 수식 최대화
소갱
2021. 10. 20. 13:57
import copy
def solution(expression):
ordinary = [['*','+','-'],['*','-','+'],['+','*','-'],['+','-','*'],['-','*','+'],['-','+','*']]
check = []
now = ""
for i in expression:
if i == '*' or i == '-' or i== '+':
if now == "0":
check.append(0)
else:
check.append(int(now))
now = ""
check.append(i)
else:
now += i
if now == "0":
check.append(0)
else:
check.append(int(now))
mx = 0
for i in ordinary:
array = copy.deepcopy(check)
for j in range(3):
for k in range(0,len(array)-1):
if array[k] == i[j]:
if array[k] == '*':
array[k+1] *= array[k-1]
elif array[k] == '+':
array[k+1] += array[k-1]
elif array[k] == '-':
array[k+1] = array[k-1] - array[k+1]
array[k] = -1
array[k-1] = -1
a = []
for k in array:
if k != -1:
a.append(k)
array = copy.deepcopy(a)
mx = max(mx,abs(array[0]))
answer = mx
return answer
문자열에서 0을 분리하는 것을 신경만 써준다면 무난하게 풀 수 있다. (예시에 나온대로 구현)