[Programmers] N으로 표현*****

문제 바로가기

def solution(N, number):
    S = []
    for i in range(1,9):
        S.append(int(str(N)*i))
    result = [{} for _ in range(10)]
    result[1] = {S[0]}
    if N == number:
        return 1
    for j in range(2,9):
        result[j] = {S[j-1]}
        for a in range(j):
            for x in result[a]:
                for y in result[j-a]:
                    result[j].add(x+y)
                    result[j].add(x-y)
                    result[j].add(x*y)
                    if y != 0:
                        result[j].add(x//y)
        if number in result[j]:
            return j
    return -1

힌트를 썼다. 어렵다.
x/y 를 추가하는 것과 x//y 를 추가하는 것에 큰 시간 차이가 있었다. number는 자연수로 주어주기에 x//y 를 추가하지 않아도 괜찮았다.

좋은 웹페이지 즐겨찾기