본문 바로가기

알고리즘/백준 (Pyhthon)

[알고리즘] 백준 7490 0만들기

 

import copy

def func(arr, n):
    if len(arr) == n:
        operator_array.append(copy.deepcopy(arr))
        return
    
    arr.append(" ")
    func(arr, n)
    arr.pop()
    
    arr.append("+")
    func(arr, n)
    arr.pop()
    
    arr.append("-")
    func(arr, n)
    arr.pop()
    
test_case = int(input())

for _ in range(test_case):
    n = int(input())
    operator_array = []
    integer = [i for i in range(1,n+1)]
    
    func([], n-1)
    
    for operator in operator_array:
        total = ""
        
        for i in range(n-1):
            total += str(integer[i]) + operator[i]
        total += str(integer[-1])
        
        total = total.replace(" ","")
        if eval(total) == 0:
            print(total)
깊은 복사(deep copy) : 내부의 객체까지 모두 새롭게 copy 되는 것 # copy.deepcopy 메소드 사용
eval() : 문자열을 계산해주는 메소드