-
Ransom Note해커랭크(HackerRank) 2019. 3. 12. 10:05반응형
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