[백준 / c++ ] 1764. 듣보잡

soobee·2023년 10월 22일

  1. 첫번째 시도(시간 초과)
#include <iostream>
#include <string>
#include <algorithm>
#include<map>
using namespace std;

int main(){
    int N, M;
    string name;
    vector<string> v;
    vector<string> result;
    
    cin >> N >> M;
    
    int sum = N+M;
    
    while(sum--){
        cin >> name;
        
        // name이 있으면 result에 추가
        if(find(v.begin(), v.end(), name) != v.end()){
            result.push_back(name);
        }
        
        v.push_back(name);
    }
    
    sort(result.begin(), result.end());
    cout << result.size() << endl;
    
    for(int i=0; i< v.size(); i++){
        cout << result[i] << endl;
    }
  1. 두번째 시도(map 사용)
#include <iostream>
#include <string>
#include <algorithm>
#include<map>
using namespace std;

int main(){
    int N, M;
    string name;
    map<string, int> m;
    vector<string> result;
    
    cin >> N >> M;
    
    int sum = N+M;
    
    while(sum--){
        cin >> name;
        
        m[name]++; // key에 name을 저장하고 나온 횟수를 value로 카운트해줌
        
        // name이 2번 이상 나온 경우
        if(m[name] > 1){
            result.push_back(name);
        }
    }
    
    sort(result.begin(), result.end());
    cout << result.size() << endl;
    
    for(int i=0; i< result.size(); i++){
        cout << result[i] << endl;
    }
}

profile
까먹지않기..저장저장.📝

0개의 댓글