문제 : https://www.acmicpc.net/problem/17219
[ 알고리즘풀이 ]
Binary Search 를 이용하면 O(NlogN + MlogN) 복잡도로 문제를 해결할 수 있습니다.
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int N, M;
cin >> N >> M;
string A, B;
vector<pair<string, string>> v;
for (int i = 0; i < N; i++) {
cin >> A >> B;
v.push_back(make_pair(A, B));
}
sort(v.begin(), v.end());
for (int i = 0; i < M; i++) {
cin >> A;
int left = 0, right = N - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (v[mid].first == A){
cout << v[mid].second << '\n';
break;
}
else if (v[mid].first < A) {
left = mid + 1;
}
else
right = mid - 1;
}
}
return 0;
}
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 1049 : 기타줄 - travelbeeee (0) | 2020.02.13 |
---|---|
[BOJ] 17218 : 비밀번호 만들기 - travelbeeee (0) | 2020.02.13 |
[BOJ] 17135 : 캐슬 디펜스 - travelbeeee (0) | 2020.02.13 |
[BOJ] 17069 : 파이프 옮기기 2 - travelbeeee (0) | 2020.02.13 |
[BOJ] 17070 : 파이프 옮기기1 - travelbeeee (0) | 2020.02.13 |