- 도감에 수록되어 있는 포켓몬의 개수 N과 맞춰야 하는 문제의 개수 M이 입력으로 주어진다.
- N개의 포켓몬을 입력받는다. 그리고 맞추고자 하는 포켓몬을 M개 입력받는다.
- 입력으로 숫자가 들어온다면 해당하는 포켓몬의 이름, 문자가 들어오면 해당하는 번호를 출력한다.


- map을 이용하여 포켓몬의 번호와 이름을 저장하면 된다.
- 여기서 map은 2개를 사용한다.
- 포켓몬 이름을 key로 가지는 map, 번호를 key로 가지는 map
- 이 후 M번만큼 반복문을 돌며 string으로 찾고자하는 포켓몬을 입력받는다.
- 여기서 string으로 입력받은 이유는 포켓몬의 이름과 번호를 입력받는 경우이기 때문이다.
- string은 index로 접근이 가능하기 때문에 숫자로 입력하는 경우 0번째는 무조건 숫자이기 때문에 isdigit으로 판단한다. 그리고 숫자가 맞을 경우 stoi() 함수를 통해 정수로 바꾸어 준다.
- 결과값을 출력
#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
map<string, int> dogam1;
map<int, string> dogam2;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, M;
string one;
string findone;
int num;
cin >> N >> M;
for (int i = 1; i <= N; i++) {
cin >> one;
dogam1[one] = i;
dogam2[i] = one;
}
for (int i = 0; i < M; i++) {
cin >> findone;
if (isdigit(findone[0])) {
cout << dogam2[stoi(findone)] << "\n";
} else {
cout << dogam1[findone] << "\n";
}
}
return 0;
}
map 2개 쓴다는 생각을 바로 했으면 5분 안에 끝나는 문제
매우 쉬움