ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • N으로 표현 C++
    프로그래머스(Programmers) 2022. 1. 2. 10:45
    반응형

     

    문제 설명

    입출력 예

    N                                                             number                                                                    return

    5 12 4
    2 11 3

    입출력 예 설명

    예제 #1
    문제에 나온 예와 같습니다.

    예제 #2
    11 = 22 / 2와 같이 2를 3번만 사용하여 표현할 수 있습니다.

     

     

    #include <string>
    #include <vector>
    #include <cmath> 
    #include <unordered_set> // unorderd_set사용
    
    using namespace std;
    
    int get_basic(int N, int cnt) {
        int res = 0;
        
        while (cnt > 0)
        {
            cnt -= 1;
            res += N * pow(10, cnt);
        }
        return res;
    }
    
    
    int solution(int N, int number) {
        int answer = -1;
        vector<unordered_set<int>> s(8);
        int idx=1;
        
        if(N == number)
        {
            return 1; 
        }
        for(auto &x : s)
        {
            x.insert(get_basic(N,idx));
            idx ++;
        }
        
        for (int i=1; i<8; i++) 
        { 
            for (int j=0; j<i; j++) {
                for (const auto & op1 : s[j]) {
                    for (const auto & op2 : s[i-j-1]) {
                        s[i].insert(op1+op2);
                        s[i].insert(op1-op2);
                        s[i].insert(op1*op2);
                        
                        if (op2 != 0)
                            s[i].insert(op1/op2);
                    }
                }
            }
            if (s[i].find(number) != s[i].end()) {
                answer = i+1;
                break;
            }
        }
        return answer;
    }

     

    => DP를 사용하여 풀어야하는 문제입니다. 

    => 5로 만들 수 있는 숫자에는 55, 555, 5555, 5555, 55555, 555555, 5555555, 5555555 이 포함됩니다. (사칙연산이 아닌데도 포함됨.)

    => 위 사항을 염두에 두고 아고리즘을 짜야합니다. 

     

    반응형

    '프로그래머스(Programmers)' 카테고리의 다른 글

    메뉴 리뉴얼 C++  (0) 2022.01.09
    실패율 C++  (0) 2022.01.05
    짝지어 제거하기 C++  (0) 2021.12.31
    체육복 C++  (0) 2021.12.30
    카카오프렌즈 컬러링 북 C++  (0) 2021.12.28

    댓글

Designed by Who.