문제
1. 포켓몬 개수 N (1~100000)
2. 맞춰야 하는 문제 개수 M (1 ~ 100000)
3. 포켓몬 이름은 영어
4. 문제는 알파벳일떄는 번호로 출력, 번호일 때는 알파벳으로 출력
위와 같은 문제인데, 포켓몬 이름과 번호를 짝 지어야 하기 때문에 map 자료구조를 쓴다. 단, 입력이 번호로도 들어올 수 있기 때문에 string:int 뿐 아니라 int:string 으로도 값을 저장해야한다. 그리고 나서 문제를 풀이하면된다.
함정
cin, cout을 그냥 사용시 시간 초과가 뜬다. 문제 중 알파벳의 크기를 알려주는 것에는 printf, scanf를 사용하라는 뜻이 있는게 아닐까 싶다.
풀이
#include <iostream> #include <map> #include <string> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int N, M; cin >> N >> M; map<string, int> m; map<int, string> m2; string name; for(int i = 1; i <= N; i++) { cin >> name; m[name] = i; m2[i] = name; } string prb; for(int i = 1; i<= M; i++) { cin >> prb; if(prb[0] >= '0' && prb[0] <= '9'){ cout << m2[stoi(prb)] << "\n"; } else{ cout << m[prb] << "\n"; } } }
광고
광고
댓글을 사용할 수 없습니다.