algorithm/문제

[Python]프로그래머스 N으로 표현/dp

유랄라- 2023. 4. 28. 14:39
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/42895

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

⚡️ 문제 설명

⚡️ 해결 방법

5를 1번 사용해서 만들 수 있는 수 set

{5}

 

5를 2번 사용해서 만들 수 있는 수 set

{0, 1, 10, 55, 25}

 

5를 3번 사용해서 만들 수 있는 수 set

= 5를 2번 사용해서 만들 수 있는 수  set 과 5를 1번 사용해서 만들 수 있는 수 set 의 사칙연산 한 set

{0, 2, 4, 5, 6, 555, -20, -4, -50, 15, 11, 50, 275, 20, -5, 60, 125, 30}

 

⚡️ 코드

 

def solution(N, number):
    answer = -1
    
    dp = []
    
    for i in range(1,9):
        numbers = set()
        numbers.add(int( str(N) * i))
        
        for j in range(i-1):
        # dp[j] 과 dp[-j-1] 의 사칙연산 set 구하기
            for a in dp[j]:
                for b in dp[-j-1]:
                    numbers.add(a+b)
                    numbers.add(a-b)
                    numbers.add(a*b)
                    if b != 0:
                        numbers.add(a//b)
            
        if number in numbers:
            answer = i
            break
        dp.append(numbers)
        
    return answer
반응형