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