ALGORITHM/Kakao

[Python] 수식 최대화

김쿸후 2021. 10. 2. 00:10

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/67257

 

코딩테스트 연습 - 수식 최대화

IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과

programmers.co.kr

 

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