N으로 표현

고장난·2021년 7월 18일
0

코딩스터디(오답)

목록 보기
9/9
#include <string>
#include <vector>
#include <unordered_set>

using namespace std;

int NN(int N, int idx){
    int result=N;
    for(int i=1; i<=idx;i++){
        result=result*10 +N;
    }
    return result;
}

int solution(int N, int number) {
    if(N==number)
        return 1;
    vector<unordered_set<int>> DP(8);
    DP[0].insert(N);
    for(int k=1;k<8;k++){
            for(int i=0; i<k;i++){
                for(int j=0; j<k;j++){
                    if(i + j + 1!=k)continue;
                    for(int a:DP[i]){  <<범위기반 for문으로 검색하면 나옴.
                        for(int b:DP[j]){
                            DP[k].insert(a+b);
                            if(a-b>0)
                                DP[k].insert(a-b);
                            DP[k].insert(a*b);
                            if(a/b>0)// a/b가 0이되는 경우를 제외 해줌.
                                DP[k].insert(a/b);
                        }
                    }
                }
            }
        DP[k].insert(NN(N,k));
        
        if(DP[k].count(number))
            return k+1;
        }
    
    return -1;
}

출처 : https://mind-devlog.tistory.com/2

풀이 방법은 생각했으나 실제로 코드화 하는데 어려움을 겪어 출처를 남긴 곳에서 공부함.

dp문제들은 코드화가 감이 안잡힌다..
profile
훈련중

0개의 댓글

관련 채용 정보