반응형
1. 문제
2. 풀이
분할 정복
분할정복은 dfs처럼 그 아래가 완성될 때, 라는 가정을 하고 푼다.
return을 잘 생각해야한다.
3. 구현
NameError: name 'ops' is not defined
ops를 함수 인자로 안보내줘서 난 에러
TypeError: unsupported operand type(s) for -: 'str' and 'int'
string 형태를 - 연산하려고 해서 난 에러, str을 cal로 보내 int형으로 바꾼 후 - 연산을 하도록 바꿨다.
def plus(ops,s):
li = s.split('+')
res = 0
for item in li:
res=res + int(cal(ops, item))
# print("plus: ", res)
return res
def minus(ops,s):
li = s.split('-')
res=int(cal(ops, li[0]))
for item in li[1:]:
res = res -int(cal(ops, item))
# print("minus: ", res)
return res
def mul(ops,s):
li = s.split('*')
res = 1
for item in li:
res=res * int(cal(ops, item))
# print("mul: ", res)
return res
def cal(ops,s):
# print(s)
if s.isdigit():
return s
res1=0
res2=0
res3=0
if ops[0] in s:
if ops[0]=='+':
res1 = abs(plus(ops,s))
elif ops[0]=='-':
res2 = abs(minus(ops,s))
elif ops[0]=='*':
res3 = abs(mul(ops,s))
elif ops[1] in s:
if ops[1]=='+':
return plus(ops, s)
elif ops[1]=='-':
return minus(ops, s)
elif ops[1]=='*':
return mul(ops, s)
elif ops[2] in s:
if ops[2]=='+':
return plus(ops, s)
elif ops[2]=='-':
return minus(ops, s)
elif ops[2]=='*':
return mul(ops, s)
return max(res1, res2, res3)
operations = [
['+', '-', '*'],
['+', '*', '-'],
['-', '+', '*'],
['-', '*', '+'],
['*', '-', '+'],
['*', '+', '-'],
]
def solution(expression):
answer = 0
for ops in operations:
answer = max(answer, abs(cal(ops, expression)))
# print(answer)
return answer
>.<!
반응형
'PS > 프로그래머스' 카테고리의 다른 글
[그리디] 프로그래머스 조이스틱 python (0) | 2021.06.27 |
---|---|
[BFS] 프로그래머스 게임 맵 최단거리 python (0) | 2021.06.18 |
프로그래머스 예상대진표 python: Queue (0) | 2021.06.16 |
프로그래머스 전화번호 목록도움말 python (0) | 2021.06.14 |
프로그래머스 짝지어 제거하기 python (0) | 2021.06.14 |
댓글