https://www.acmicpc.net/problem/1764
< 듣보잡 >
듣도 못한 단어들과 보도 못한 단어들을 입력 받고 공통된 단어들을 사전 순으로 출력해주면 되는 문제이다.
1. 듣도 못한 단어들을 입력 받는다.
2. 듣도 못한 단어들을 저장한 배열을 sort한다.
3. 보도 못한 단어들을 입력받으면서 듣도 못한 배열에 존재하는지 이진탐색을 한다.
4. 이진 탐색 결과가 존재하는 경우 result 배열에 넣어준다.
5. result 배열을 sort해준 뒤 출력해준다.
* binary_search는 값이 존재하는 경우 true, 존재하지 않는다면 false를 리턴해준다.
* set의 find는 찾는 값이 없을 시 end()를 리턴한다.
* Vector를 이용한 풀이
#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; vector<string> v; vector<string> result; for (int i = 0; i < n; ++i) { string s; cin >> s; v.push_back(s); } sort(v.begin(), v.end()); int cnt = 0; for (int i = 0; i < m; ++i) { string s; cin >> s; if (binary_search(v.begin(), v.end(), s)) { result.push_back(s); cnt++; } } cout << cnt << '\n'; sort(result.begin(), result.end()); for (string s : result) cout << s << '\n'; return 0; }
Set을 이용한 풀이
#include <iostream> #include <set> #include <string> #include <algorithm> using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, m; cin >> n >> m; set<string> v; set<string> result; for (int i = 0; i < n; ++i) { string s; cin >> s; v.insert(s); } int cnt = 0; for (int i = 0; i < m; ++i) { string s; cin >> s; if (v.find(s) != v.end()) { result.insert(s); cnt++; } } cout << cnt << '\n'; for (string s : result) cout << s << '\n'; return 0; }
'알고리즘 > 백준 문제풀기' 카테고리의 다른 글
BOJ 백준 2857 FBI <문자열 처리> (0) | 2019.01.06 |
---|---|
콜라한캔 :: BOJ 백준 민균이의 비밀번호<문자열 처리> (0) | 2019.01.05 |
BOJ 백준 1032 명령 프롬프트 <문자열 처리> (0) | 2019.01.02 |
BOJ 백준 크로아티아 알파벳 <문자열 처리> (0) | 2019.01.02 |
BOJ 백준 1475 방 번호 <문자열 처리> (0) | 2019.01.02 |