![[백준 C++] 1764 : 듣보잡](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGTDER%2FbtsKTp7LKzn%2Fy1qw5LR03wUpZEdaoLNGKk%2Fimg.png)
[백준 C++] 1764 : 듣보잡CSE/코딩 문제풀이2024. 11. 22. 13:48
Table of Contents
https://www.acmicpc.net/problem/1764
시간초과를 잘 처리해야 하는 문제이다.
#include <iostream>
#include <set>
using namespace std;
int main()
{
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(0);
int N, M;
set <string> list;
set <string> ans;
cin >> N >> M;
for (int i = 0; i < N; i++)
{
string temp;
cin >> temp;
list.insert(temp);
}
for (int i = 0; i < M; i++)
{
string temp;
cin >> temp;
auto check = list.find(temp);
if (check != list.end())
ans.insert(temp);
}
cout << ans.size() << '\n';
for (string str : ans)
cout << str << '\n';
return 0;
}
시간초과를 방지하기 위해 tie와 sync_with_stdio를 사용하였다.
vector대신 자동으로 정렬해주는 set을 사용하였고 값을 찾을 때에는 find()함수를 사용하였다.
이 때 기본 std:find() 같은 경우 시간복잡도 O(N)이지만, set에 있는 find를 사용할 경우 O(logN)으로 줄어들기 때문에 이를 잘 알고 find를 사용해야 한다.
'CSE > 코딩 문제풀이' 카테고리의 다른 글
[백준 C++] 10816 : 숫자 카드 2 (0) | 2024.11.24 |
---|---|
[백준 C++] 2164 : 카드2 (0) | 2024.11.23 |
[백준 C++] 1920 : 수 찾기 (0) | 2024.11.21 |
[백준 C++] 11866 : 요세푸스 문제 0 (0) | 2024.11.20 |
[백준 C++] 7562 : 나이트의 이동 (0) | 2024.11.19 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!