https://school.programmers.co.kr/learn/courses/30/lessons/67257
## [카카오인턴] 수식 최대화 문제
# target
- input : expression(숫자와 연산자이 섞어 있는 일차 계산식을 담은 문자열)
- output:연산자의 우선순위에 따른 계산 결과의 값 중 최대값을 도출
ex) * > + > - 의 순서로 순위가 높은 연산자부터 계산
# 필요한 함수(정의)
- solution : 여러 함수의 결과를 받아 최종 답을 산출
- expr_split : 계산식을 숫자와 연산자로 나누어 리스트에 문자로 저장하여 리턴
- spl_perm : [+,-,*]의 세가지 연산자의 순서를 바꾸어 만들수 있는 모든 조합을 답은 리스트 리턴
- calculation : 우선순위 여섯가지 중 한가지 조합을 변수로 받아 결과값을 계산
def solution(expression):
spl = ['+','-','*']
expr = expr_split(expression,spl)
spl = spl_perm(spl)
answer = []
for ss in spl:
cal = calculation(expression, expr, ss)
answer.append(cal)
return max(answer)
def expr_split(expression,spl):
expr = []
temp = ''
for i in expression:
if i in spl:
expr.append(temp)
expr.append(i)
temp = ''
else: temp += i
else: expr.append(temp)
return expr
from itertools import permutations
def spl_perm(spl):
spl = list(permutations(spl, 3))
return spl
from collections import deque
def calculation(expression, expr, ss):
ex = deque(expr) # 계산할 문자열 원본
for s in ss:
q = deque() # 수를 하나씩 담을 큐
while ex:
token = ex.popleft()
if token == s:
q.append(str(eval(q.pop()+token+ex.popleft())))
else:
q.append(token)
ex = q
return abs(int(ex[0]))
'Code-note' 카테고리의 다른 글
[AI] 머신러닝 기초개념 정리 (1) | 2025.01.16 |
---|---|
[자료구조] 이진 탐색 트리(BST) 기본 개념 -python (0) | 2024.12.17 |
[Django] 장고 공식 튜토리얼 -python (0) | 2024.10.09 |
[프로젝트] snake 게임 만들기 -python (2) | 2024.10.05 |
[프로젝트] PingPong 게임 만들기 -python (8) | 2024.10.05 |