알고리즘/백준

백준 17219 비밀번호 찾기 c++ [컴공과고씨]

시간빌게이츠 2022. 9. 3. 14:26
반응형

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

 

17219번: 비밀번호 찾기

첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번

www.acmicpc.net

이 문제는 굉장히 간단합니다.

map 컨테이너를 사용하면 간단히 풀 수 있습니다.

이러한 문제류는 pair같은 것으로 저장 후 탐색을 for문으로 돌리게 되면 시간초과가 나기 때문에 

map 컨테이너를 이용해 key값을 찾아주는 것이 시간 복잡도 측면에서 유리합니다.

 

전체 코드

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
#include <iostream>
#include <map>
#include <string>
#include <vector>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m;
    map<stringstring> ps; // 맵 선언
    string s1, s2; 
    vector<string> re;
    cin >> n >> m;
    for (int i = 0; i < n; i++){
        cin >> s1 >> s2;
        ps.insert(make_pair(s1, s2)); // 사이트, 비밀번호
    }
    for (int i = 0; i < m; i++){
        cin >> s1;
        re.push_back(ps[s1]); // 비밀번호 찾은 후 저장
    }
    for (int i = 0; i < m;i++){
        cout << re[i] << '\n';
    }
    return 0;
}
cs
반응형