문제
소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include<iostream>
#include<map>
#include<string>
#include<vector>
#include<sstream>
int main() {
//M: 문제의 개수
//N: 포켓몬의 개수
int M{}, N{};
std::cin >> N >> M;
std::map<std::string,std::string> PokemonIndex;
//출력용 Vector
std::vector <std::string> printVector;
/*
Insert Data
*/
for (int i = 0; i < N; ++i) {
std::stringstream index{};
std::string name{};
std::cin >> name;
index << (i+1);
PokemonIndex.emplace(name, index.str());
PokemonIndex.emplace(index.str(), name);
}
std::string answer{};
for (int i = 0; i < M; ++i) {
std::cin >> answer;
printVector.emplace_back(PokemonIndex.find(answer)->second);
}
for (const auto& i : printVector) {
std::cout << i << "\n";
}
}
|
후기
이 문제를 해결하기 위한 키워드는 이진트리(map)이다.
C++에서 제공하는 map 컨테이너는 이진트리 기반의 컨테이너이다. 이진트리를 직접 구현해서 진행해도 되지만 나는 map 컨테이너를 사용하였다. 이 문제는 숫자를 입력했을 때에는 문자를 문자를 입력했을 때 에는 숫자가 나와야 한다.
그래서 숫자와 문자열 모두를 Key값으로 집어넣고 찾을 때 해당하는 답을 출력용 vector에 저장하여 출력하였다.
출처 및 레퍼런스
문제 링크: https://www.acmicpc.net/problem/1620
관련 글
[자료구조 알고리즘/그래프(Graph)와 트리(Tree)] - 이진 검색트리(Binary Search Tree)
[온라인 코딩/탐색(Search)] - [백준] 1991번 트리 순회
[온라인 코딩/탐색(Search)] - [구름IDE] PostOrder Traversal (★4)
'온라인 코딩 > 탐색(Search)' 카테고리의 다른 글
[백준] 6603번 로또 (0) | 2020.07.20 |
---|---|
[구름 IDE] 비타알고 시즌2 졸업(★3) (0) | 2020.07.02 |
[백준] 2178번 미로 탐색 (0) | 2020.05.22 |
[백준] 2003번 수들의 합 2 (0) | 2020.05.15 |
[백준] 2667번 단지번호붙이기 (0) | 2020.05.09 |