문제 설명
숫자카드
해결 방법
이중 for문으로 했더니 시간초과가 나서 binary_search(이진탐색)을 활용했다.
N개의 입력들을 v1 벡터에 넣고, M개의 입력들을 v2 벡터에 넣는다.
v1 벡터를 오름차순 정렬하고,binary_search(v1.begin(), v1.end(), v2[i])
를 해서 v2에 있는 원소들을 이진 탐색하여 출력한다.
binary_search는 찾으면 1을 반환하고, 없으면 0을 반환한다.
💻소스코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, num1, M, num2;
vector<int> v1, v2;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> num1;
v1.push_back(num1);
}
cin >> M;
for (int i = 0; i < M; i++) {
cin >> num2;
v2.push_back(num2);
} // 입력
sort(v1.begin(), v1.end());
for (int i = 0; i < M; i++) {
cout << binary_search(v1.begin(), v1.end(), v2[i]) << " ";
} // 출력
return 0;
}
문제 설명
문자열 집합
해결 방법
N개의 문자열을 입력받아 unordered_set에 insert한다.
M개의 문자열을 입력받아 find 함수를 사용하여 해당 문자열이 있다면 카운트해서 출력한다.
💻소스코드
#include <iostream>
#include <unordered_set>
#include <string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M;
cin >> N >> M;
int cnt = 0;
string str;
unordered_set<string> s;
for (int i = 0; i < N; i++) {
cin >> str;
s.insert(str);
}
for (int i = 0; i < M; i++) {
cin >> str;
if (s.find(str) != s.end())
cnt++;
}
cout << cnt << "\n";
return 0;
}
문제 설명
나는야 포켓몬 마스터 이다솜
해결 방법
숫자가 입력되면 포켓몬 이름이 출력되어야 하고, 포켓몬 이름이 입력되면 숫자가 출력되어야 한다. 그래서<int, string>, <string, int>
두 개의 map을 선언했다. 입력으로 포켓몬과 숫자를 map에 insert하고, input이 숫자 문자열인지 알파벳인지 검사해서 알맞은 출력을 하도록 했다.
💻소스코드
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M;
string poket, input;
map<int, string> poket_num;
map<string, int> poket_name;
cin >> N >> M;
for (int i = 0; i < N; i++) { // 도감 두개를 만듬.
cin >> poket;
poket_num.insert({i + 1, poket}); // {숫자, 포켓몬}
poket_name.insert({poket, i + 1}); // {포켓몬, 숫자}
}
for (int i = 0; i < M; i++) {
cin >> input;
if ('0' <= input[0] && input[0] <= '9')
cout << poket_num[stoi(input)] << "\n"; // 숫자 입력 시 포켓몬 이름 출력
else
cout << poket_name[input] << "\n"; // 포켓몬 이름 입력 시 숫자 출력
}
return 0;
}