스택&큐 | 프로그래머스 고득점kit N으로 표현 | Python

Table of Contents


프로그래머스 고득점kit N으로 표현 | Python

📌 프로그래머스 고득점kit N으로 표현 문제 바로가기


🔎 문제 설명

💚 Level 3

- 난이도 ★★★☆
- 스택&큐

익숙해지지 않는 문제. 나중에 한 번 더 풀어서 쉽게 구현할 수 있도록 해야겠다.

N으로 만들 수 있는 수로 사칙연산을 할 때 N을 최소한으로 사용해야 한다.
예) 555는 5가 3번 사용된 것이다.


📌📌📌
코드의 전체적인 풀이는 다음과 같다.

  1. N이 9번 이상 사용되면 -1 반환
    ➡️ 미리 N이 사용될 횟수 후보(1~8번)를 만든다.

  2. 횟수 후보 안에서 만들 수 있는 수 x, y 로 사칙연산을 하고 그 결과를 numbers 에 추가
    ➡️ numbers 에 타깃 넘버 number 가 있으면 횟수 반환



💻 내 코드

def solution(N, number):
    numbers = [set() for _ in range(9)]
    # N 사용횟수 > 8, return -1
    for i in range(1,9):
        numbers[i].add(int(str(N)*i))
        for j in range(i//2+1):
            for x in numbers[j]:
                for y in numbers[i-j]:
                    numbers[i].add(x+y)
                    numbers[i].add(x-y)
                    numbers[i].add(y-x)
                    numbers[i].add(x*y)
                    if y != 0: numbers[i].add(x//y)
                    if x != 0: numbers[i].add(y//x)
        if number in numbers[i]:
            return i
        
    return -1




 


💙 You need to log in to GitHub to write comments. 💙
If you can't see comments, please refresh page(F5).