목차

     

     


     

     

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

     

     

    https://www.acmicpc.net/problem/1620

     

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

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

    www.acmicpc.net

     


     

    해결전략

     

    map을 2개 만든다.

     

    isdigit으로 숫자인지 문자인지 판단

     

    stoi는 string to int. string을 int로 바꿔준다.

     

     

     

    name1[i] = str1;
    name2[str1] = i;

    위와 아래는 같은 의미이다. 어떤것을 쓰던 자유다.

     

    name1.insert({ i, str });
    name2.insert({ str, i });


     

    코드

     

    #include<iostream>
    #include<map>
    #include<string>
    using namespace std;
    
    
    int main() {
    	ios::sync_with_stdio(false);
    	cin.tie(NULL);
    	cout.tie(NULL);
    
    	int n, m;
    	cin >> n >> m;
    	
    	map<int, string> name1;
    	map<string, int> name2;
    
    	for (int i = 1; i <= n; i++) {
    		string str1;
    		cin >> str1;
    
    		name1[i] = str1;
    		name2[str1] = i;
    		//name1.insert({ i, str });
    		//name2.insert({ str, i });
    	}
    
    	for (int i = 1; i <= m; i++) {
    		string str2;
    		cin >> str2;
    
    		//숫자
    		if (isdigit(str2[0]))
    			cout << name1[stoi(str2)] << '\n';
    		//문자
    		else
    			cout << name2[str2] << '\n';
    	}
    
    	return 0;
    }