C++ 나는야 포켓몬 마스터 이다솜 - (STL map 사용하여 풀기) - 백준 알고리즘

Updated:

#include <iostream>
#include <cstdio>
#include <map>
#include <vector>
#include <string>
#include <cstring>

using namespace std;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	int N, M;
	string data;
	vector<string> v;	// 숫자가 들어왔을 때 이름을 알기 위해 생성
	map<string, int> mon;
	map<string, int>::iterator it;

	cin >> N >> M;

	v.resize(N + 1);
	for (int i = 0; i <= N; i++)// vector v 초기화
	{
		v[i] = '0';
	}

	for (int i = 1; i <= N; i++) // N번 반복하면서 포켓몬의 이름을 받으면서 벡터 v에 저장 및 map에 저장
	{
		cin >> data;
		v[i] = data;
		mon.insert(make_pair(data, i));
	}

	for (int i = 0; i < M; i++)
	{
		char name[20] = { '0' };	//	포켓몬 이름은 20자를 넘지 않는다고 했으므로

		cin >> data;
		strcpy(name, data.c_str());	// string을 char로 변환

		if (isalpha(name[0])) // name이 알파벳이면 1반환(대문자) 아니면 0반환
			cout << mon.find(data)->second << "\n";
		else               // 입력받은 게 숫자일 때
			cout << v[stoi(data)] << "\n";
	}

	return 0;
}

Visual Studio 2015를 사용하여 코딩하였습니다.

Visual Studio 2015에서 컴파일하였을 때는 strcpy대신 strcpy_s를 사용하지 않으면 에러가 발생합니다.

백준에서 채점 시에는 strcpy를 사용하여야 컴파일 에러가 발생하지 않습니다.

Visual Studio 2015에서 컴파일 에러가 발생하지 않으려면 첫 줄에
#pragma warning(disable:4996);를 추가해주시면 됩니다.


Leave a comment