[Programmers] N으로 표현

Date:

[Programmers] N으로 표현

Problem URL : N으로 표현


#include <unordered_set>
#include <vector>

using namespace std;

int solution(int N, int number) {
    vector<unordered_set<int>> DP(9);
    int NN = N;
    for (int i = 1; i < 9; i++) {
        if (number == NN) {
            return i;
        }
        DP[i].insert(NN);
        NN = NN * 10 + N;
    }

    for (int k = 2; k < 9; k++) {
        for (int i = 1; i < k; i++) {
            for (int a : DP[i]) {
                for (int b : DP[k - i]) {
                    DP[k].insert(a + b);
                    if (a > b) {
                        DP[k].insert(a - b);
                    }
                    DP[k].insert(a * b);
                    if (a >= b) {
                        DP[k].insert(a / b);
                    }
                }
            }
        }
        if (DP[k].count(number)) {
            return k;
        }
    }

    return -1;
}

댓글