Algorithm/BOJ

[BOJ 14725] 개미굴 C++

surimi🍥 2023. 3. 1. 01:18
반응형

난이도: Gold 3
번호: 14725
생성일: March 1, 2023 12:48 AM
알고리즘 분류: 문자열, 자료 구조, 트라이, 트리
언어: C++

14725번: 개미굴

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