Python/알고리즘

DP Level 3 N으로 표현 - python (프로그래머스)

구름용 2023. 6. 30. 22:07
from pprint import pprint
def solution(N, number):
    
    if N == number:
        return 1
    
    answer = 0
    
    dp = [set() for _ in range(9)]
    
    dp[1].add(N)
    
    for i in range(2, 9):
        
        # N concat
        dp[i].add(int(str(N) * i))
        for j in range(1, i // 2 + 1):
            for y in dp[j]:
                for x in dp[i-j]:
                    dp[i].add(x + y)
                    dp[i].add(x - y)
                    dp[i].add(x * y)
                    
                    dp[i].add(-x + y)
                    dp[i].add(-x - y)
                    dp[i].add(-x * y)
                    if y != 0:
                        dp[i].add(x // y)
        
        if number in dp[i]:
            return i

    return -1