728x90
https://www.acmicpc.net/problem/1620
1620번: 나는야 포켓몬 마스터 이다솜
첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면
www.acmicpc.net
1. 문제
문제가 너무길어.. 생략
2. PS
- 맵을 사용하여 포켓몬의 key와 value data를 저장함.
- 처음에는 map을 하나만 사용하여 key를 반환해야 하는 부분에서 for반복문을 사용해 시간초과 오답이 났음.
- 포켓몬 이름반환용과 번호 반환용 맵을 두개 만들어 해결함.
- 효율적인 방법인지는 모르겠음..
#include <iostream>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
int main() {
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int n,m;
string poke;
map<int,string> book;
map<string,int> book2;
cin >> n >> m;
for(int i = 0; i < n; i++) {
cin >> poke;
book[i+1] = poke;
book2[poke] = i+1;
}
for(int j = 0; j < m; j++) {
string ans;
cin >> ans;
if(ans[0] >= '0' && ans[0] <= '9') {
int num = stoi(ans);
cout << book[num] << '\n';
}
else {
cout << book2[ans] << '\n';
}
}
}
'BOJ > C++' 카테고리의 다른 글
BOJ [C++]) 10815번 숫자 카드 (0) | 2021.12.21 |
---|---|
BOJ [C++]) 10867번 중복 빼고 정렬하기 (0) | 2021.12.21 |
BOJ [C++]) 1021번 회전하는 큐 (0) | 2021.12.20 |
BOJ [C++]) 2164번 카드2 (0) | 2021.12.20 |
BOJ [C++]) 1874번 스택 수열 (0) | 2021.12.20 |