백준 알고리즘(C++)

백준 1620번 나는야 포켓몬 마스터 이다솜(C++)

coding232624 2023. 12. 18. 22:57

문제

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

 

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

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

www.acmicpc.net

 

해설

map<타입1,타입2> 을 통해 "변수명[문자열] = 숫자"로 저장 출력하는 문제

atoi(변수명.c_str())을 통해 숫자인지 아닌지 판별

map,atoi 사용이 주된 문제

 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<bits/stdc++.h>
using namespace std;
 
int N, M, t;
string tmp;
//문자열:숫자 형식으로 저장하기 위해 map이용 
map<string,int> mp;
string ret[100004];
 
int main(){
    //속도 향상
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL); 
    
    //N,M 입력받기
    cin >> N >> M; 
        
    //입력받은 값 ret[] 과 mp에 저장하기 
    for (int i = 0; i < N; i++){
        cin >> tmp;
        mp[tmp] = i+1;
        ret[i+1= tmp;
    }
    
    //atoi( .c_str())이용해 숫자일 경우 ret을 숫자가 아닐 경우 mp를 통해 결과 출력 
    for (int i = 0; i < M; i++){
        cin >> tmp;
        if (atoi(tmp.c_str()) == 0){
            cout << mp[tmp] << "\n";
        }
        else cout << ret[atoi(tmp.c_str())] << "\n";    
    }
    
    return 0;
}
cs