[백준 1620] 나는야 포켓몬 마스터 이다솜

alsry._.112·2023년 9월 20일
0

백준

목록 보기
60/102

🔗문제 풀러가기
단계별로 풀어보기 단계 14의 4번째 문제이다.

문제 분석


Map 컨네이너를 이용해 문제를 해결하였다.

코드

#include <iostream>
#include <map>
#include <string>
using namespace std;
string arr[100001];

int main()
{
	cin.tie(NULL);                    //안 하면 시간초과
	ios_base::sync_with_stdio(false); //안 하면 시간초과

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

	map<string, int> _map;

	for (int i = 1; i <= n; i++)
	{
		string input;
		cin >> input;
		_map.insert(make_pair(input, i));
		arr[i] = input;
	}

	for (int i = 0; i < m; i++)
	{
		string input;
		cin >> input;

		if (_map.find(input) != _map.end())
		{
			cout << _map.find(input)->second << "\n";
		}
		else
		{
			int index = stoi(input);
			cout << arr[index] << "\n";
		}
	}
}

해석

  1. 입력받은 수 만큼 반복문을 돌며 이름을 입력받는다. 입력받은 이름과 현재 반복문의 i를 map에 저장한다. 입력받은 이름은 arr에도 저장한다.
  2. 반복문을 돌며 문자열을 입력받는다.
  3. 입력받은 문자열이 map에 없다면 입력받은 문자열이 숫자 이므로 입력받은 숫자의 인덱스의 arr값을 출력한다.
  4. 만약 입력받은 문자열이 map에 있다면 입력받은 문자열이 숫자가 아니므로 입력받은 문자열의 second를 출력한다.
profile
소통해요

0개의 댓글