๋ฌธ์
์ฒซ์งธ ์ค์๋ ๋๊ฐ์ ์๋ก๋์ด ์๋ ํฌ์ผ๋ชฌ์ ๊ฐ์ N์ด๋ ๋ด๊ฐ ๋ง์ถฐ์ผ ํ๋ ๋ฌธ์ ์ ๊ฐ์ M์ด ์ฃผ์ด์ ธ. N๊ณผ M์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ธ๋ฐ, ์์ฐ์๊ฐ ๋ญ์ง๋ ์์ง? ๋ชจ๋ฅด๋ฉด ๋ฌผ์ด๋ด๋ ๊ด์ฐฎ์. ๋๋ ์ธ์ ๋ ์ง ์ง๋ฌธ์ ๋ตํด์ค ์ค๋น๊ฐ ๋์ด์์ด.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ํฌ์ผ๋ชฌ์ ๋ฒํธ๊ฐ 1๋ฒ์ธ ํฌ์ผ๋ชฌ๋ถํฐ N๋ฒ์ ํด๋นํ๋ ํฌ์ผ๋ชฌ๊น์ง ํ ์ค์ ํ๋์ฉ ์ ๋ ฅ์ผ๋ก ๋ค์ด์. ํฌ์ผ๋ชฌ์ ์ด๋ฆ์ ๋ชจ๋ ์์ด๋ก๋ง ์ด๋ฃจ์ด์ ธ์๊ณ , ๋, ์... ์ฒซ ๊ธ์๋ง ๋๋ฌธ์์ด๊ณ , ๋๋จธ์ง ๋ฌธ์๋ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ด. ์์ฐธ! ์ผ๋ถ ํฌ์ผ๋ชฌ์ ๋ง์ง๋ง ๋ฌธ์๋ง ๋๋ฌธ์์ผ ์๋ ์์ด. ํฌ์ผ๋ชฌ ์ด๋ฆ์ ์ต๋ ๊ธธ์ด๋ 20, ์ต์ ๊ธธ์ด๋ 2์ผ. ๊ทธ ๋ค์ ์ค๋ถํฐ ์ด M๊ฐ์ ์ค์ ๋ด๊ฐ ๋ง์ถฐ์ผํ๋ ๋ฌธ์ ๊ฐ ์ ๋ ฅ์ผ๋ก ๋ค์ด์. ๋ฌธ์ ๊ฐ ์ํ๋ฒณ์ผ๋ก๋ง ๋ค์ด์ค๋ฉด ํฌ์ผ๋ชฌ ๋ฒํธ๋ฅผ ๋งํด์ผ ํ๊ณ , ์ซ์๋ก๋ง ๋ค์ด์ค๋ฉด, ํฌ์ผ๋ชฌ ๋ฒํธ์ ํด๋นํ๋ ๋ฌธ์๋ฅผ ์ถ๋ ฅํด์ผํด. ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ์ซ์๋ ๋ฐ๋์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , N๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๊ณ , ์ ๋ ฅ์ผ๋ก ๋ค์ด์ค๋ ๋ฌธ์๋ ๋ฐ๋์ ๋๊ฐ์ ์๋ ํฌ์ผ๋ชฌ์ ์ด๋ฆ๋ง ์ฃผ์ด์ ธ. ๊ทธ๋ผ ํ์ดํ !!!
ํ์ด
#include <bits/stdc++.h>
#include <vector>
using namespace std;
vector<string> split(string input, string delimeter) {
long long pos = 0;
string token = "";
vector<string> result;
while ((pos = input.find(delimeter)) != string::npos) {
token = input.substr(0, pos);
result.push_back(token);
input.erase(0, pos + delimeter.length());
}
result.push_back(input);
return result;
}
vector<string> input(int n) {
vector<string> result;
for (int i = 0; i < n; i++) {
string input = "";
getline(cin, input);
result.push_back(input);
}
return result;
}
map<string, int> createMap(vector<string> dictionary) {
map<string, int> result;
for (int i = 0; i < dictionary.size(); i++) {
result[dictionary[i]] = i + 1;
}
return result;
}
int main() {
// ํฌ์ผ๋ชฌ ์, ๋ฌธ์ ์ ์
๋ ฅ
string nm = "";
getline(cin, nm);
vector<string> result = split(nm, " ");
// Index To Name
vector<string> indexToName = input(stoi(result[0]));
// Name To Index
map<string, int> nameToIndex = createMap(indexToName);
// ๋ฌธ์ ์ ํฌ์ผ๋ชฌ
vector<string> pokemons = input(stoi(result[1]));
for (string pokemon: pokemons) {
// nameToIndex ์ ๊ฐ์ด 0 ์ด๋ฉด ์ด๋ฆ ์ถ๋ ฅ ์๋๋ฉด ์ธ๋ฑ์ค ์ถ๋ ฅ
if (nameToIndex[pokemon] == 0) cout << indexToName[stoi(pokemon) - 1] << "\n";
else cout << nameToIndex[pokemon] << "\n";
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1213] ํฐ๋ฆฐ๋๋กฌ ๋ง๋ค๊ธฐ (0) | 2023.04.16 |
---|---|
[๋ฐฑ์ค 9375] ํจ์ ์ ์ ํด๋น (0) | 2023.04.14 |
[๋ฐฑ์ค 9996] ํ๊ตญ์ด ๊ทธ๋ฆฌ์ธ ๋ ์๋ฒ์ ์ ์ํ์ง (0) | 2023.04.04 |
[๋ฐฑ์ค 11655] ROT13 (0) | 2023.04.03 |
[๋ฐฑ์ค 10988] ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธํ๊ธฐ (0) | 2023.03.29 |