KEEP GOING
[python] 프로그래머스 67257번 : 수식 최대화 (재귀 함수) 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/67257
1. 연산자의 우선순위 조합 > itertools 모듈의 permutations 함수 사용
2. 주어진 우선순위대로 문자열 연산하기 > 재귀함수 구현★
from itertools import permutations
# 재귀
def calc(op, idx, exp):
if exp.isdigit():
return str(exp)
else:
if op[idx] == '*':
tmp = []
split_data = exp.split('*')
for s in split_data:
tmp.append(calc(op, idx+1, s))
return str(eval("*".join(tmp)))
if op[idx] == '-':
tmp = []
split_data = exp.split('-')
for s in split_data:
tmp.append(calc(op, idx+1, s))
return str(eval("-".join(tmp)))
if op[idx] == '+':
tmp = []
split_data = exp.split('+')
for s in split_data:
tmp.append(calc(op, idx+1, s))
return str(eval("+".join(tmp)))
def solution(expression):
answer = 0
operations = list(permutations(['*', '+', '-'], 3))
for op in operations:
result = abs(int(calc(op, 0, expression)))
answer = max(result, answer)
return answer
<정리>
s = '200*200'
data = eval(s)
print(type(data)) # <class 'int'>
lst = s.split('*') # ['200', '200']
print(lst)
print('*'.join(lst)) # 200*200 (type:str)
print(eval('*'.join(lst))) # 40000 (type:int)
반응형
'code review > implementation' 카테고리의 다른 글
[python] SWEA : 어디에 단어가 들어갈 수 있을까 (0) | 2022.07.01 |
---|---|
[python] SWEA : 파리퇴치 (0) | 2022.07.01 |
[python] 백준 3048번 : 개미 (0) | 2022.04.25 |
[python] 프로그래머스 64061번 : 크레인 인형뽑기 게임 (slicing) (0) | 2022.04.03 |
[python] 프로그래머스 17681번 : 비밀지도(bin, zip, replace) (0) | 2022.04.01 |
Comments