[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/알고리즘 연습

[알고리즘 연습] 수식최대화 (프로그래머스 lv2, 파이썬)

inu 2021. 6. 10. 14:01
반응형

문제

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

 

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

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

programmers.co.kr

풀이

def solution(expression):
    answer = 0
    priorities = [
        ('*', '-', '+'),
        ('*', '+', '-'),
        ('+', '*', '-'),
        ('+', '-', '*'),
        ('-', '*', '+'),
        ('-', '+', '*')
    ]
    for priority in priorities:
        one = list(map(lambda x: list(map(lambda x : x.split(priority[2]),x.split(priority[1]))), expression.split(priority[0])))
        for i in range(len(one)):
            for j in range(len(one[i])):
                one[i][j] = "(" + priority[2].join(one[i][j]) + ")"
            one[i] = "(" + priority[1].join(one[i]) + ")"
        one = "(" + priority[0].join(one) + ")"
        if answer < abs(eval(one)):
            answer = abs(eval(one))
    return answer
  • 6가지의 우선순위 후보를 직접만들고,
  • 이를 하나씩 대입해 split해준다음,
  • 이렇게 생성된 3차원 배열을 괄호형태로 묶어서 계산하는 방식을 선택했다.
  • eval : 주어진 문자열을 수식으로보고 계산을 처리해준다.
  • 만약 eval함수를 사용할 수 없을 경우, 괄호를 처리할 수 있는 스택계산기를 만들어 사용해야할 것이다.
반응형