문제
https://www.acmicpc.net/problem/17219
문제 설명
사이트 주소와 해당 사이트의 계정 비밀번호를 입력한다.
찾고자 하는 비밀번호를 등록한 사이트 주소를 입력하면 비밀번호가 출력되게끔 만들면 된다.
코드
#include <iostream>
#include <map>
using namespace std;
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
map <string, string> stg;
int N, M; cin >> N >> M;
for (int i = 0; i < N; i++) {
string address, password;
cin >> address >> password;
stg.insert({address, password});
}
for (int i = 0; i < M; i++) {
string name;
cin >> name;
if (stg.find(name) != stg.end()) {
cout << stg[name] << '\n';
}
}
}
코드 설명
map STL을 사용했다. 그 이유는 map이 키와 값을 한 쌍으로 갖는다는 것과 중복을 방지해주는 특징이 있기 때문이다.
사이트 주소와 비밀번호를 입력받으면 {사이트 주소, 비밀번호} 순으로 페어를 만들어 map에 삽입한다.
이후 비밀번호를 찾고자 할 때, map의 함수인 find를 사용해 비밀번호를 출력한다.
추가로 생각해 볼 것
중복을 자동으로 방지해주는 점에서 map을 사용했는데, map은 공간을 많이 차지한다.
그래서 vector와 pair 조합을 사용하는 것이 공간복잡도 면에서 더 좋아보인다.
이후 문제를 다시 풀게 된다면 vector와 pair 조합으로 풀어보는 것도 괜찮을 듯 하다.
'Koala - 11기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python3] 10773번 : 제로 (0) | 2023.07.22 |
---|---|
[백준 / C++] 2828: 사과 담기 게임 (0) | 2023.07.21 |
[백준/python] 1362번: 펫 (0) | 2023.07.19 |
[백준/C++] 10867번: 중복 빼고 정렬하기 (0) | 2023.07.18 |
11기 기초알고리즘 스터디 출석부 (0) | 2023.07.17 |