๐Ÿ’ป

[๋ฐฑ์ค€] ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ - 1764. ๋“ฃ๋ณด์žก ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€] ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ - 1764. ๋“ฃ๋ณด์žก

๋˜ํšจ๋‹ˆ 2020. 4. 6. 21:56

๋ฌธ์ œ

๊น€์ง„์˜์ด ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ๊ณผ, ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ์ด ์ฃผ์–ด์งˆ ๋•Œ, ๋“ฃ๋„ ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ๋ช…๋‹จ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜ N, ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. ์ด์–ด์„œ ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„๊ณผ, N+2์งธ ์ค„๋ถ€ํ„ฐ ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์ด ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋ฆ„์€ ๋„์–ด์“ฐ๊ธฐ ์—†์ด ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ๊ทธ ๊ธธ์ด๋Š” 20 ์ดํ•˜์ด๋‹ค. N, M์€ 500,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

 

์ถœ๋ ฅ

๋“ฃ๋ณด์žก์˜ ์ˆ˜์™€ ๊ทธ ๋ช…๋‹จ์„ ์‚ฌ์ „์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ1

3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton

 

์˜ˆ์ œ ์ถœ๋ ฅ1

2
baesangwook
ohhenrie

 

์ƒ๊ฐ

์ฒ˜์Œ์— find() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒƒ์œผ๋กœ ํ–ˆ๋‹ค. O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋‚˜์™€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. 

binary_search()๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์–ด์•ผํ•œ๋‹ค. (์‹œ๊ฐ„๋ณต์žก๋„ ์ƒ๊ฐํ•ด์•ผ๋˜๋Š” ๋ฌธ์ œ => dp, ๋ถ„ํ• ์ •๋ณต! )

push_back์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค resize() ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฏธ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

๋ฐฑ์ค€์—์„œ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ 200KB๋‚˜ ์ฐจ์ด๊ฐ€ ๋‚ฌ๋‹ค.

 

์ž‘์„ฑํ•œ ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main(int argc, const char *argv[])
{
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
 
    int n, m;
    vector<string> a;      //๋“ฃ๋„ ๋ชปํ•œ ์‚ฌ๋žŒ
    vector<string> result; //๋“ฃ๋„ ๋ณด๋„ ๋ชปํ•œ ์‚ฌ๋žŒ
 
    cin >> n >> m;
    a.resize(n);
 
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
 
    // ์ด์ง„ ํƒ์ƒ‰์„ ์œ„ํ•œ ์ •๋ ฌ
    sort(a.begin(), a.end());
 
    for (int i = 0; i < m; i++)
    {
        string s;
        cin >> s;
        if (binary_search(a.begin(), a.end(), s))
        {
            result.push_back(s);
        }
    }
 
    sort(result.begin(), result.end());
 
    cout << result.size() <<"\n";
    for (int i = 0; i < result.size(); i++)
    {
        cout << result[i] << "\n";
    }
 
    return 0;
}
Colored by Color Scripter
๋ฐ˜์‘ํ˜•
Comments