250x250
Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 힙덤프
- Calendar
- spring boot
- math
- Union-find
- CSS
- 스프링부트
- deque
- javascript
- BFS
- union_find
- 큐
- GC로그수집
- map
- 리소스모니터링
- dfs
- List
- NIO
- scanner
- string
- Java
- sql
- alter
- priority_queue
- JPA
- Properties
- html
- date
- set
- 스택
Archives
- Today
- Total
매일 조금씩
[C++] 백준 1764번 : 듣보잡 본문
728x90
반응형
처음엔
듣도 못한 사람 벡터 하나, 보도 못한 사람 벡터 하나, 그리고 듣보잡 벡터 하나 이렇게 벡터 3개를 사용하려 하였다.
하지만 이진탐색 트리를 사용하여 좀더 효율적으로 할수 있다는 것을 알게 된후 다시 코딩 하였다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int M, N;
vector<string> v;
bool binarySearch(int low, int high, string name) {
if (low > high)
return false;
else {
int mid = (low + high) / 2;
if (!v[mid].compare(name))
return true;
else if (v[mid] > name)
return binarySearch(low, mid - 1, name);
else
return binarySearch(mid + 1, high, name);
}
}
int main(void){
cin >> N >> M;
for (int i = 0; i < N; i++) {
string name;
cin >> name;
v.push_back(name);
}
sort(v.begin(), v.end());
vector<string> result;
for (int i = 0; i < M; i++) {
string name;
cin >> name;
if (binarySearch(0, v.size(), name))
result.push_back(name);
}
sort(result.begin(), result.end());
cout << result.size() << endl;
for (int i = 0; i < result.size(); i++) {
cout << result[i] << endl;
}
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[C++] 백준 1543번: 문서 검색 (0) | 2019.10.31 |
---|---|
[C++] 백준 2941번: 크로아티아 알파벳 (0) | 2019.09.29 |
[C++] 백준 10809번: 알파벳 찾기 (0) | 2019.09.12 |
[C++] 백준 11383번: 뚊 (0) | 2019.09.10 |
[C++] 백준 2799번: 블라인드 (0) | 2019.09.09 |