-
[2020 카카오 인턴십] 수식 최대화알고리즘/프로그래머스 2021. 8. 16. 15:23
https://programmers.co.kr/learn/courses/30/lessons/67257#
- 풀이
1. 연산자가 3가지 이므로, 연산자의 우선순위 경우는 3! = 6가지가 있다.
2. expression을 숫자는 operand, 연산자는operator에 쪼개 나눈다.
3. 연산자의 우선순위 경우에 따라, 식을 계산하여 가장 큰 값이 answer에 남게한다.
import re def solution(expression): answer = 0 op = ["*+-","*-+","+*-","+-*","-*+","-+*"] operand = re.split(r"\+|\-|\*", expression) #피연산자 operator = [] #연산자 for i in expression: if i in "*+-": operator.append(i) for o in op: # 연산자 순위 경우 : "*+-" "*-+" "+*-" ... operand2=operand[:] operator2=operator[:] k = 0 while k < len(o): # 연산자에 대해 계산, '*' '+' '-' for i in range(len(operator2)): if operator2[i] == o[k]: # 해당 연산자를 찾으면, 계산 operand2.insert(i, eval(str(operand2[i])+o[k]+str(operand2[i+1]))) operand2.pop(i+1) operand2.pop(i+1) operator2.pop(i) k -= 1 break k += 1 if answer < abs(int(operand2[0])): answer = abs(int(operand2[0])) return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어 (0) 2021.08.20 [2020 카카오 인턴십] 보석 쇼핑 (0) 2021.08.17 [2021 카카오 채용연계형 인턴십] 거리두기 확인하기 (0) 2021.08.15 [2021 Dev-Matching: 웹 백엔드 개발자(상반기)] 행렬 테두리 회전하기 (0) 2021.08.14 [2021 Dev-Matching: 웹 백엔드 개발자(상반기)] 로또의 최고 순위와 최저 순위 (0) 2021.08.14