[알고리즘] 괄호를 삽입하는 여러 가지 방법

June·2021년 2월 7일
0

알고리즘

목록 보기
72/260

괄호를 삽입하는 여러 가지 방법

책 풀이

class Solution:
    def diffWaysToCompute(self, input: str) -> List[int]:
        def compute(left, right, op):
            results = []
            for l in left:
                for r in right:
                    results.append(eval(str(l) + op + str(r)))
            return results

        if input.isdigit():
            return [int(input)]

        results = []
        for index, value in enumerate(input):
            if value in "-+*":
                left = self.diffWaysToCompute(input[:index])
                right = self.diffWaysToCompute(input[index + 1: ])

                results.extend(compute(left, right, value))

        return results


*, -, + 연산자가 등장할 때 좌/우 분할을 하고 각각 계산 결과를 턴한다.

eval() 함수는 문자열을 파이상하고 파이썬 표현식으로 처리해주는 (evaluate) 역할을 한다.

>> eval('4+5')
9

append() vs extend()
리스트에 또 다른 리스트를 삽입할 때 append()는 이처럼 리스트 전체를 또 다른 엘리먼트로 처리한다.

>> a = [1,2,3]
>> b = [4,5]
>> a.append(b)
>> a
[1,2,3,[4,5]]

extend()는 삽입 대상의 리스트를 풀어서 각각의 엘리먼트로 확장해 삽입한다.

>> a = [1,2,3]
>> b = [4,5]
>> a.extend(b)
>> a
[1,2,3,4,5]

0개의 댓글