ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Ransom Note
    해커랭크(HackerRank) 2019. 3. 12. 10:05
    반응형

    https://www.hackerrank.com/challenges/ctci-ransom-note/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=dictionaries-hashmaps

     

    1. 문제

    주어진 문자열 벡터요소에 다음 벡터요소가 포함 되어 있는지 확인 하는 문제

     

    2. 알고리즘

    키워드 - hash

     

    3. 코드

     

    #include <bits/stdc++.h>
    
    using namespace std;
    
    vector<string> split_string(string);
    
    // Complete the checkMagazine function below.
    void checkMagazine(vector<string> magazine, vector<string> note) {
        sort(magazine.begin(), magazine.end());
        sort(note.begin(), note.end());
        bool ok =  includes(magazine.begin(), magazine.end(), note.begin(), note.end());  
    
        if(ok) {
            cout << "Yes";
        } else {
            cout << "No";
        }
    }
    
    int main()
    {
        string mn_temp;
        getline(cin, mn_temp);
    
        vector<string> mn = split_string(mn_temp);
    
        int m = stoi(mn[0]);
    
        int n = stoi(mn[1]);
    
        string magazine_temp_temp;
        getline(cin, magazine_temp_temp);
    
        vector<string> magazine_temp = split_string(magazine_temp_temp);
    
        vector<string> magazine(m);
    
        for (int i = 0; i < m; i++) {
            string magazine_item = magazine_temp[i];
    
            magazine[i] = magazine_item;
        }
    
        string note_temp_temp;
        getline(cin, note_temp_temp);
    
        vector<string> note_temp = split_string(note_temp_temp);
    
        vector<string> note(n);
    
        for (int i = 0; i < n; i++) {
            string note_item = note_temp[i];
    
            note[i] = note_item;
        }
    
        checkMagazine(magazine, note);
    
        return 0;
    }
    
    vector<string> split_string(string input_string) {
        string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) {
            return x == y and x == ' ';
        });
    
        input_string.erase(new_end, input_string.end());
    
        while (input_string[input_string.length() - 1] == ' ') {
            input_string.pop_back();
        }
    
        vector<string> splits;
        char delimiter = ' ';
    
        size_t i = 0;
        size_t pos = input_string.find(delimiter);
    
        while (pos != string::npos) {
            splits.push_back(input_string.substr(i, pos - i));
    
            i = pos + 1;
            pos = input_string.find(delimiter, i);
        }
    
        splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1));
    
        return splits;
    }
    반응형

    '해커랭크(HackerRank)' 카테고리의 다른 글

    Left Rotation  (0) 2019.03.12
    Simple Array Sum  (0) 2018.08.19
    Compare the Triplets  (0) 2018.08.19
    A Very Big Sum  (0) 2018.08.19
    Diagonal Difference  (0) 2018.08.19

    댓글

Designed by Tistory.