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; }
→ 이 코드를 다시 제출해보니 성공 !!!