https://www.acmicpc.net/problem/1620
입출력
풀이
#include<iostream>
#include<vector>
#include<string>
#include<map>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
cout.tie(nullptr);
//입력 받을 포켓몬 개수 n, 맞춰야할 문제 개수 m
int n, m;
cin >> n >> m;
string name;
map<string, int> pocketmon;
vector<string> names;
for (int i = 0; i < n; i++)
{
cin >> name;
pocketmon.insert({ name, i+1 });
names.push_back(name);
}
string find;
vector<string> finds;
for (int i = 0; i < m; i++)
{
cin >> find;
finds.push_back(find);
}
for (int i = 0; i < finds.size(); i++)
{
if (pocketmon.find(finds[i]) != pocketmon.end()) //문자열 입력
{
cout << pocketmon.find(finds[i])->second << "\n";
}
else //숫자 입력
{
int num = stoi(finds[i]) - 1;
cout << names[num] << "\n";
}
}
}
1. if (pocketmon.find(finds[i]) != pocketmon.end())
====> pocketmon맵을 모두 돌아도 찾는 값이 없을 경우를 의미한다
map에서 find함수를 사용할때 find함수가 map의 전체를 돌고 찾는 값이 없다면 map의 마지막 원소의 주소를 반환한다
2. stoi
stoi = string to int
stof = string to float
stol = string to long
stod = string to double
자료형 변환 함수
'> 코딩테스트' 카테고리의 다른 글
[백준] 11478 서로 다른 부분 문자열의 개수 (C++) (0) | 2023.06.15 |
---|---|
[백준] 1764 듣보잡 (C++) (0) | 2023.06.15 |
[백준] 14425 문자열 집합 (C++) (0) | 2023.06.13 |
[백준] 10815 숫자 카드 (C++) (1) | 2023.06.11 |
[백준] 10814 나이순 정렬 (C++) (0) | 2023.06.07 |