1. 문제
https://programmers.co.kr/learn/courses/30/lessons/67257
2. 풀이
- deep copy
list를 함수에 인자로 넣으면 list가 바뀐다.. ㄷㄷ.. 나는 이걸 왜 지금까지 몰랐던가...
그래서 다른 함수로 부른 뒤 deepcopy를 이용하여 복사해서 사용해야 한다..!!
- remove (값)
remove는 항상 값을 맨 앞에부터 지운다!
동명 다른값이 지워지지 않도록 조심하자
3. 코드
import copy
def calculate(expr,oper,a,b,c) :
expression = copy.deepcopy(expr)
oper_list = copy.deepcopy(oper)
oper_list.append(-1)
for j in [a,b,c]:
i = 0
while(oper_list[i] != -1):
if (oper_list[i] == j):
if j == '+' :
expression[i] = int(expression[i]) + int(expression[i+1])
elif j == '-' :
expression[i] = int(expression[i]) - int(expression[i+1])
elif j == '*' :
expression[i] = int(expression[i]) * int(expression[i+1])
expression.pop(i+1)
oper_list.remove(j)
else : i = i+1
return abs(expression[0])
def solution(expression):
nums = expression.replace('-','+')
nums = nums.replace('*','+')
num_list = nums.split('+')
oper_list = []
for i in expression:
if i == '+' or i == '-' or i == '*':
oper_list.append(i)
answer = 0
answer = max(calculate(num_list,oper_list,'+','-','*'),
calculate(num_list,oper_list,'+','*','-'),
calculate(num_list,oper_list,'-','+','*'),
calculate(num_list,oper_list,'-','*','+'),
calculate(num_list,oper_list,'*','-','+'),
calculate(num_list,oper_list,'*','+','-'))
return answer
'ALGORITHM > Kakao' 카테고리의 다른 글
[Python] 괄호 회전하기 (0) | 2021.10.05 |
---|---|
[Python] 비밀지도 (0) | 2021.10.03 |
[Python] 키패드 누르기 (0) | 2021.09.30 |
[Python] 징검다리 (0) | 2021.09.30 |
[Python] 괄호 변환 (0) | 2021.09.30 |