March 23, 2021 ( last updated : March 23, 2021 )
자료구조
맵과 해시
알고리즘
algorithm
https://github.com/sneakstarberry/
[백준] 1620번 나는야 포켓몬 마스터 이다솜
포켓몬 이름들을 저장해 두었다가 문제에 따라서 포켓몬 이름 혹은 인덱스 번호로 포켓몬을 찾는 문제
unorderd_map에 넣고 풀면된다. 그냥 map과는 달리 unorderd_map은 찾는데 O(1)의 시간이 걸리기 때문에 쉽게 풀 것으로 예상되었다. 근데 시간초과가 나와서 당황했는데 원인은 i/o 성능 때문이었다. 성능 개선을 하도록 코드를 추가하니 시간이 널널하게 풀렸다.
#include <iostream>
#include <unordered_map>
#define endl '\n'
using namespace std;
int N, M;
int is_num(string str);
int main() {
std::cin.tie(0);
std::cin.sync_with_stdio(false);
std::cout.tie(0);
std::cout.sync_with_stdio(false);
unordered_map<int, string> int_to_search;
unordered_map<string, int> string_to_search;
cin >> N >> M;
for (int i = 1; i <= N; i++) {
string pokemon;
cin >> pokemon;
string_to_search[pokemon] = i;
int_to_search[i] = pokemon;
}
for (int i = 0; i < M; i++) {
string question;
cin >> question;
if (is_num(question)) {
cout << (int_to_search[stoi(question)]) << endl;
} else {
cout << (string_to_search[question]) << endl;
}
}
}
int is_num(string str) {
for (auto c : str) {
if (isdigit(c) == 0) {
return 0;
}
}
return 1;
}
Originally published March 23, 2021
Latest update March 23, 2021
Related posts :