N+M만큼 반복하며 N보다 작을 때 no_listen 벡터에 저장no_see 벡터에 저장answer 벡터에 저장size 출력sort(default 값이 오름차순)한 후 출력Source Code
#include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; int main() { int N, M; vector <string> no_listen, no_see, answer; cin >> N >> M; for (int i = 0; i < N + M; i++) { string str; cin >> str; if (i < N) { no_listen.push_back(str); } else no_see.push_back(str); } for (string l : no_listen) { for (string s : no_see) { if (l == s) { answer.push_back(s); break; } } } cout << answer.size() << endl; sort(answer.begin(), answer.end()); for (int i = 0; i < answer.size(); i++) { cout << answer[i] << endl; } return 0; }→ 위 코드를 제출한 결과 시간 초과 발생...
map<string, int>를 생성한 후 저장map에 존재하는지 비교해서 존재하면 answer에 저장size 출력sort(오름차순 정렬) 후 출력#include <iostream> #include <string> #include <vector> #include <map> #include <algorithm> using namespace std; int main() { int N, M; string str; map<string, int> no_listen; vector <string> answer; cin >> N >> M; for (int i = 0; i < N; i++) { cin >> str; no_listen.insert(make_pair(str, 1)); } for (int i = 0; i < M; i++) { cin >> str; if (no_listen[str]) { answer.push_back(str); } } cout << answer.size() << endl; sort(answer.begin(), answer.end()); for (int i = 0; i < answer.size(); i++) { cout << answer[i] << endl; } return 0; }→ 이 코드를 다시 제출해보니 성공 !!!