-
[집합] 문자열집합(14425)(C++)BOJ C++ 알고리즘 공부 2022. 6. 27. 16:53
https://www.acmicpc.net/problem/14425
1. 문제 개요
총 N개의 문자열로 이루어진 집합 S가 주어진다.
입력으로 주어지는 M개의 문자열 중에서 집합 S에 포함되어 있는 것이 총 몇 개인지 구하는 프로그램을 작성하시오.
2. 입출력
3. 문제 풀이
벡터를 이용해서 풀려고 했다가 시간초과가 떠서 실패하고 set을 사용했더니 통과했다.
앞으로 유니크한 원소를 저장하고 집합 안의 원소가 존재하는지 확인하는 코드를 짤때는 set을 사용해야겠다.
set에 원소가 존재하는지 확인하기 위해서는 find 함수를 사용하면 되고, find(원소)의 반환값이 set의 end 값이라면 원소가 존재하지 않는 다는 것이며 그게 아니면 원소가 존재한다.
set<string> s; if(s.find(str)!=s.end()) count++; // s.end()와 같지 않다면 원소가 존재
4. 전체 코드
// // 14425.cpp // backjoon // // Created by 배주현 on 2022/06/27. // #include <iostream> #include <string> #include <set> using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); set<string> s; int N, M; cin >> N >> M; string str; for(int i=0;i<N;i++) { cin >> str; s.insert(str); } int count = 0; for(int i=0;i<M;i++) { cin >> str; if(s.find(str)!=s.end()) count++; } cout << count; }
'BOJ C++ 알고리즘 공부' 카테고리의 다른 글
[투포인터] 두 수의 합(3273)(C++) (0) 2022.06.29 [스택] 균형잡힌 세상(4949)(C++) (0) 2022.06.28 [그래프] 항체 인식(22352)(C++) (0) 2022.06.18 [수학] 헤이카카오(22353)(C++) (0) 2022.06.18 [수학] 수학은 체육과목 입니다 3(22351)(C++) (0) 2022.06.17