목차

N으로 표현

ps
링크programmers.co.kr/…
출처프로그래머스
문제 번호42895
문제명N으로 표현
레벨Level 3
분류

DP

시간복잡도O(n^2*m*10^m)
인풋사이즈n<=9, m<=8
사용한 언어Python
해결날짜2020/11/30
태그

고득점 Kit - 동적계획법

풀이

코드

"""Solution code for "Programmers 42895. N으로 표현".

- Problem link: https://programmers.co.kr/learn/courses/30/lessons/42895
- Solution link: http://www.teferi.net/ps/problems/programmers/42895
"""

MAX = 8


def solution(N, number):
    dp = [set() for _ in range(MAX + 1)]
    dp[0] = {0}
    for i in range(1, MAX + 1):
        dp[i] = {int(str(N) * i)}
        for j in range(1, i):
            for n1 in dp[j]:
                for n2 in dp[i - j]:
                    dp[i] |= {n1 + n2, n1 - n2, n1 * n2}
                    if n2 != 0:
                        dp[i].add(n1 // n2)
        if number in dp[i]:
            return i        
    return -1