-
[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; }풀이
- 해시맵, 딕셔너리 사용:
- 사이트의 주소와 비밀번호를 저장하고, 해당 사이트의 비밀번호를 빠르게 찾기 위해 딕셔너리를 사용한다.
- 딕셔너리는 평균적으로 **O(1)**의 시간 복잡도로 키에 해당하는 값을 검색할 수 있으므로, 많은 데이터가 주어지더라도 효율적으로 비밀번호를 찾을 수 있다.
- 입력 처리:
- 처음에 주어진 사이트와 비밀번호의 쌍을 모두 딕셔너리에 저장한다.
- 이후 찾고자 하는 사이트의 비밀번호를 딕셔너리에서 빠르게 조회하여 출력한다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[Python][C++] 18111번 마인크래프트 (2) 2024.09.12 [Python][C++] 17626번 Four Squares (0) 2024.09.11 [Python][C++] 16928번 뱀과 사다리 게임 (0) 2024.09.08 [Python][C++] 14940번 쉬운 최단거리 (0) 2024.09.07 [Python][C++] 11727번 2×n 타일링 2 (0) 2024.09.06 - 해시맵, 딕셔너리 사용: