17219. 비밀번호 찾기

2022-01-31
백준 17219번 풀이

이 글은 Obsidian에서 마이그레이션되었으며, 그 과정에서 AI의 도움을 받았습니다. 오류나 누락된 내용이 있다면 댓글로 알려주세요!

문제

17219번: 비밀번호 찾기

풀이

아이디어

사이트 주소는 중복되지 않으므로 사이트 주소를 key, 비밀번호를 value로 하는 map을 이용해서 데이터를 저장해주었다.

검색의 횟수가 적지 않지만 map의 find 함수는 시간복잡도 O(log n)이 보장되므로 시간초과 문제도 없을 것이라고 생각했다.

다만, 문제 하단의 노트에도 있듯이 cin, cout을 사용한다면 이렇게 입출력의 횟수가 많을 경우에는 시간초과가 될 수 있으므로 main함수 상단에

ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

코드를 추가하여 입출력 속도를 향상시켜주자.

(위 코드 세 줄에 대한 설명은 다른 문제를 풀면서 했으므로 생략… )

코드

/*
2022-1-30
17219_비밀번호 찾기
https://www.acmicpc.net/problem/17219
*/

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int N, M;
    map<string, string> memo;
    string address, pw;

    cin >> N >> M;
    for(int i = 0; i < N; i++){
        cin >> address >> pw;
        memo.insert(make_pair(address, pw));
    }

    for(int i = 0; i < M; i++){
        cin >> address;
        cout << memo.find(address)->second << '\n';
    }

    return (0);
}