https://www.acmicpc.net/problem/1620
문제
N개의 포켓몬 이름이 주어진다.
그다음 M개의 문제가 주어지는데 이때 포켓몬 이름이 주어지면 -> 그 포켓몬의 번호,
포켓몬의 번호가 주어지면 -> 그 포켓몬의 이름을 맞혀야 한다.
N, M <= 10^5
풀이
번호 -> 이름은 그냥 배열로 구현하면 된다.
이름 -> 번호는 unordered_map을 사용해서 빠르게 구현할 수 있다.
전체 코드
/*boj s4 1620 나는야 포켓몬 마스터 이다솜*/
#include <iostream>
#include <unordered_map>
#define MAXN 100005
using namespace std;
int N, M;
string arr[MAXN];
unordered_map<string, int> map;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for (int i = 1; i <= N; i++) {
cin >> arr[i];
map[arr[i]] = i;
}
while (M--) {
string m;
cin >> m;
if (m[0] >= '0' && m[0] <= '9') {
cout << arr[stoi(m)] << "\n";
} else {
cout << map[m] << "\n";
}
}
}
'알고리즘' 카테고리의 다른 글
백준 s3 9375 패션왕 신해빈 c++ (0) | 2024.03.07 |
---|---|
백준 s4 17219 비밀번호 찾기 c++ (0) | 2024.03.05 |
백준 s5 7785 회사에 있는 사람 c++ 이분탐색, 해시 (0) | 2024.03.05 |
백준 g4 13144 List of Unique Numbers c++ (0) | 2024.03.04 |
백준 g5 22862 가장 긴 짝수의 연속한 부분 수열(large) c++ (0) | 2024.03.04 |