백준 1620 : 나는야 포켓몬 마스터 이다솜

6228 단어 자료구조cppcpp

https://www.acmicpc.net/problem/1620

1. 접근

  • 문제가 정말 길지만,, 단순하게 포켓몬 도감에 숫자를 넣으면 포켓몬 이름을, 포켓몬 이름을 넣으면 숫자를 출력하라는 문제이다 (문제 읽기가 귀찮아서 드랍하는 사람이 있었을것같다)
  • 나의 경우, 이름으로 숫자를 찾는 map<string,int> 맵하나, 숫자 인덱스로 바로 이름을 찾도록 vector 하나를 사용해주었다.
  • vector를 사용하지않고 map에서 find를 쓰는 방법도 있었을 수 있지만 메모리보다는 시간이 더 촉박할 것 같아 두가지의 자료구조를 모두 사용했다.

2. 나의 풀이

#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <string>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int n, m;
	cin >> n >> m;

	map<string, int> dic;
	vector<string> dicnum;
	dicnum.resize(n+1);

	for (int i = 1; i <= n; i++) {
		cin >> dicnum[i];
		dic[dicnum[i]] = i;
	}
	for (int i = 0; i < m; i++) {
		string input;
		cin >> input;
		if (isdigit(input[0])) {
			cout << dicnum[stoi(input)] << "\n";
		}
		else {
			cout << dic[input] << "\n";
		}	
	}		
			
	return 0;
}

좋은 웹페이지 즐겨찾기