[プログラマー]第5週コレクション辞書


回答日:2021-09-10

質問する


質問リンク:https://programmers.co.kr/learn/courses/30/lessons/84512

アクセスと解析


次のようにコードを実現した.
  • 1~5ビットのすべての単語を取得します.(後追跡)
  • で見つかった単語を昇順に並べます.
  • find関数で検索したい単語の位置を検索し、その位置を返します.
  • コード#コード#

    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    string alpha = "AEIOU";
    void makeWords(string candid, int len, vector<string> &v) {
        if (candid.length() == len) {
            v.push_back(candid);
            return;
        }
        
        for (char ch : alpha) {
            makeWords(candid + ch, len, v);
        }
    }
    
    int solution(string word) {
        int answer = 0;
        vector<string> v;
        for (int i = 1; i <= 5; i++) {
            makeWords("", i, v);
        }
        sort(v.begin(), v.end());
        
        auto it = find(v.begin(), v.end(), word);
        answer = it - v.begin() + 1;
        
        return answer;
    }

    結果



    フィードバック


    追跡の問題をさらに解決