오답노트

[해시] BOJ 1620번 나는야 포켓몬 마스터 이다솜 본문

C,C++/코딩테스트

[해시] BOJ 1620번 나는야 포켓몬 마스터 이다솜

권멋져 2022. 6. 10. 17:24
https://www.acmicpc.net/problem/1620
 

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면

www.acmicpc.net

- 문제파악

포켓몬의 이름이 N개 이다솜이 알고싶은 포켓몬의 이름 또는 포켓몬의 숫자가 M개 입력된다. 이 때 이다솜이 알고 싶은 포켓몬의 이름 또는 포켓몬의 숫자를 출력하라. 포켓몬의 숫자는 처음에 입력될 때 들어온 순서다.

 

- 정답

unordered_map 변수를 두 개 선언했지만

숫자를 물어보면 이름을 답하는건 배열로 해도 충분하다.

 

#include "bits//stdc++.h"

using namespace std;

int main()
{
	cin.tie(0);
	ios::sync_with_stdio(0);

	int n, m;
	cin >> n >> m;

	unordered_map<string, int> m_namekey;
	unordered_map<int, string> m_numberkey;
	int num = 1;
	while (n--)
	{
		string name;
		cin >> name;
		m_namekey.insert({ name,num });
		m_numberkey.insert({ num,name });

		num++;		
	}

	while (m--)
	{
		string input;
		cin >> input;
		
		if (input[0] >= '0' && input[0] <= '9')
		{
			int num;
			num = stoi(input);
			cout << m_numberkey[num] << "\n";
		}
		else
			cout << m_namekey[input] << "\n";			
	}

}