반응형
난이도: Gold 3
번호: 14725
생성일: March 1, 2023 12:48 AM
알고리즘 분류: 문자열, 자료 구조, 트라이, 트리
언어: C++
C++
#include <iostream>
#include <map>
#include <vector>
using namespace std;
class Trie
{
private:
map<string, Trie *> child;
public:
void Insert(vector<string> &foods)
{
Trie *now = this;
for (int i = 0; i < foods.size(); i++)
{
if (now->child[foods[i]] == nullptr)
now->child[foods[i]] = new Trie();
now = now->child[foods[i]];
}
}
void Output(int depth)
{
for (auto &ch : child)
{
for (int i = 0; i < depth; i++)
cout << "--";
cout << ch.first << '\n';
ch.second->Output(depth + 1);
}
}
};
int main()
{
cin.tie(0)->sync_with_stdio(0);
cout.tie(0);
int N;
cin >> N;
Trie *root = new Trie();
for (int i = 0; i < N; i++)
{
int k;
cin >> k;
vector<string> foods(k);
for (int j = 0; j < k; j++)
cin >> foods[j];
root->Insert(foods);
}
root->Output(0);
}
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ 4195] 친구 네트워크 C++ (0) | 2023.03.02 |
---|---|
[BOJ 1652] 누울 자리를 찾아라 C++ (0) | 2023.03.01 |
[BOJ 11060] 점프 점프 C++ (0) | 2023.02.28 |
[BOJ 21938] 영상처리 c++ (0) | 2023.02.27 |
[BOJ 21736] 헌내기는 친구가 필요해 c++ (0) | 2023.02.25 |