ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python][C++] 17219번 비밀번호 찾기
    Algorithm/Baekjoon 2024. 9. 10. 23:24

    문제

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

     

     

     

     

    코드

    1. Python

    import sys
    
    input = sys.stdin.readline  # 빠른 입력을 위해 sys.stdin.readline 사용
    
    n, m = map(int, input().split())  # n: 저장할 사이트 수, m: 찾을 사이트 수
    
    passwords = dict()  # 사이트와 비밀번호를 저장할 딕셔너리
    
    # n개의 사이트와 비밀번호를 입력받아 딕셔너리에 저장
    for _ in range(n):
        site, pwd = input().rstrip().split()  # 사이트와 비밀번호를 입력받고
        passwords[site] = pwd  # 딕셔너리에 사이트를 키로, 비밀번호를 값으로 저장
    
    # m개의 사이트를 입력받아 해당 사이트의 비밀번호를 출력
    for _ in range(m):
        site = input().rstrip()  # 찾을 사이트 입력
        print(passwords[site])  # 해당 사이트의 비밀번호 출력

     

    2. C++

    #include <iostream>
    #include <unordered_map>
    using namespace std;
    
    int main() {
        int n, m;
    
        cin >> n >> m;  // n: 키-값 쌍의 개수, m: 질의 수 입력
    
        unordered_map<string, string> mp;  // 문자열을 키와 값으로 저장할 해시맵
    
        // n개의 키-값 쌍 입력
        while (n--) {
            string key, value;
    
            cin >> key >> value;  // 키와 값을 입력받음
    
            mp[key] = value;  // 해시맵에 키와 값을 저장
        }
    
        // m개의 질의 처리
        while (m--) {
            string key;
    
            cin >> key;  // 찾을 키 입력
    
            cout << mp[key] << "\n";  // 해당 키에 대응하는 값을 출력
        }
    
        return 0;
    }

     

     

    풀이

     

    1. 해시맵, 딕셔너리 사용:
      • 사이트의 주소와 비밀번호를 저장하고, 해당 사이트의 비밀번호를 빠르게 찾기 위해 딕셔너리를 사용한다.
      • 딕셔너리는 평균적으로 **O(1)**의 시간 복잡도로 키에 해당하는 값을 검색할 수 있으므로, 많은 데이터가 주어지더라도 효율적으로 비밀번호를 찾을 수 있다.
    2. 입력 처리:
      • 처음에 주어진 사이트와 비밀번호의 쌍을 모두 딕셔너리에 저장한다.
      • 이후 찾고자 하는 사이트의 비밀번호를 딕셔너리에서 빠르게 조회하여 출력한다.

     

Designed by Tistory.