728x90
- 관련 사이트: https://www.acmicpc.net/problem/1620
저장된 포켓몬 도감 목록에서 이름을 검색하면 포켓몬 번호로, 번호로 검색하면 포켓몬 이름으로 출력해주는 문제이다.
"맵을 사용하여 이름과 수를 연결짓는 문제" 로 힌트가 주어져 있다.
단순 map 만으로 입력을 받아 검색을 수행할 시, 시간 초과 문제가 발생되어 vector와 map 둘 다 사용하여 문제를 풀어주었다.
1) map에 (key: 이름, value: 번호) 형식으로 저장, vector에 index == 번호 로 하여 이름 저장
2-1) 입력받은 문자가 숫자일 경우, vector에서 포켓몬 이름 출력
2-2) 입력받은 문자가 숫자가 아닐 경우, map에서 포켓몬 번호 출력
#include <iostream>
#include <vector>
#include <map>
using namespace std;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int N, M;
cin >> N >> M;
vector<string> pocketmon_name(N + 1, "");
map<string, int> pocketmon;
string name;
for (int i = 1; i <= N; i++)
{
cin >> name;
pocketmon.insert(pair<string, int>(name, i));
pocketmon_name[i] = name;
}
string quest;
string result = "";
for (int i = 0; i < M; i++)
{
cin >> quest;
if (isdigit(quest[0]))
result += (pocketmon_name[stoi(quest)] + "\n");
else
result += (to_string(pocketmon.find(quest)->second) + "\n");
}
cout << result;
return 0;
}
- 메모리: 23792 KB
- 시간: 160 ms
- 코드 길이: 767 B
728x90
댓글