πŸ“¦ Changgo/[Solved.ac] Class2~4

[BOJ][C++] λ°±μ€€ 1764번: λ“£λ³΄μž‘

선달 2023. 3. 24. 23:44
λ°˜μ‘ν˜•

https://www.acmicpc.net/problem/1764

 

1764번: λ“£λ³΄μž‘

첫째 쀄에 듣도 λͺ»ν•œ μ‚¬λžŒμ˜ 수 N, 보도 λͺ»ν•œ μ‚¬λžŒμ˜ 수 M이 μ£Όμ–΄μ§„λ‹€. μ΄μ–΄μ„œ λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 걸쳐 듣도 λͺ»ν•œ μ‚¬λžŒμ˜ 이름과, N+2μ§Έ 쀄뢀터 보도 λͺ»ν•œ μ‚¬λžŒμ˜ 이름이 μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§„λ‹€.

www.acmicpc.net

 

문제

κΉ€μ§„μ˜μ΄ 듣도 λͺ»ν•œ μ‚¬λžŒμ˜ λͺ…단과, 보도 λͺ»ν•œ μ‚¬λžŒμ˜ λͺ…단이 μ£Όμ–΄μ§ˆ λ•Œ, 듣도 보도 λͺ»ν•œ μ‚¬λžŒμ˜ λͺ…단을 κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 듣도 λͺ»ν•œ μ‚¬λžŒμ˜ 수 N, 보도 λͺ»ν•œ μ‚¬λžŒμ˜ 수 M이 μ£Όμ–΄μ§„λ‹€. μ΄μ–΄μ„œ λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 걸쳐 듣도 λͺ»ν•œ μ‚¬λžŒμ˜ 이름과, N+2μ§Έ 쀄뢀터 보도 λͺ»ν•œ μ‚¬λžŒμ˜ 이름이 μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§„λ‹€. 이름은 띄어쓰기 없이 μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어지며, κ·Έ κΈΈμ΄λŠ” 20 μ΄ν•˜μ΄λ‹€. N, M은 500,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.

듣도 λͺ»ν•œ μ‚¬λžŒμ˜ λͺ…λ‹¨μ—λŠ” μ€‘λ³΅λ˜λŠ” 이름이 μ—†μœΌλ©°, 보도 λͺ»ν•œ μ‚¬λžŒμ˜ λͺ…단도 λ§ˆμ°¬κ°€μ§€μ΄λ‹€.

좜λ ₯

λ“£λ³΄μž‘μ˜ μˆ˜μ™€ κ·Έ λͺ…단을 μ‚¬μ „μˆœμœΌλ‘œ 좜λ ₯ν•œλ‹€.

 

풀이

자료ꡬ쑰 Set(μ§‘ν•©) 을 μ΄μš©ν•˜λ©΄ 비ꡐ적 μ‰¬μš΄ 풀이가 κ°€λŠ₯ν•˜λ‹€

13%μ—μ„œ ν‹€λ ΈμŠ΅λ‹ˆλ‹€ κ°€ λœ¬λ‹€λ©΄ 좜λ ₯쑰건 (μ‚¬μ „μˆœμœΌλ‘œ 좜λ ₯)을 μ§€μΌ°λŠ”μ§€ ν™•μΈν•΄λ³΄μž

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>

using namespace std;

int main() {
    set<string> s;
    vector<string> v;
    
    int n, m;
    cin >> n >> m;
    
    string input;
    while(n--) {
        cin >> input;
        s.insert(input);
    }
    while(m--) {
        cin >> input;
        if(s.find(input) != s.end())
            v.push_back(input);
    }
    
    sort(v.begin(), v.end());
    cout << v.size() << "\n";
    for(string i : v)
        cout << i << "\n";
}
λ°˜μ‘ν˜•