article thumbnail image
Published 2021. 7. 12. 22:42

문제 설명

 

문제 링크 

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

 

14725번: 개미굴

첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N개가 주어진다.  (1 ≤ N ≤ 1000) 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이

www.acmicpc.net

풀이

trie를 이용하여 풀이할 수 있다.

trie를 구현할때 string을 인덱스로 하고 값은 Node구조체로 하기 위해 map을 이용한다.

 

코드

#include <iostream>
#include <string>
#include <vector>
#include <map>

using namespace std;

struct Node {
    map<string, Node> child;
};

void insert(Node &node, vector<string> &arr, int idx = 0) {
    if (idx == arr.size()) return;
    if (!node.child.count(arr[idx])) node.child[arr[idx]] = Node();
    insert(node.child[arr[idx]], arr, idx + 1); 
}

void find(Node &node, int depth = 0) {
    for (auto nxt : node.child) {
        for (int i = 0; i < depth; i++) printf("--");
        cout << nxt.first << "\n";
        find(nxt.second, depth + 1);
    }
}

int main() {
    int N; scanf("%d", &N);
    Node root;
    while (N--) {
        int K; scanf("%d", &K);
        vector<string> v;
        while (K--) {
            string tmp; cin >> tmp;
            v.push_back(tmp);
        }
        insert(root, v);
    }
    find(root);
}

 

'Algorithm > BOJ' 카테고리의 다른 글

백준[5670] 휴대폰 자판  (0) 2021.07.13
백준[14425] 문자열 집합  (0) 2021.07.13
백준[10266] 시계 사진들  (0) 2021.07.12
백준[13506] 카멜레온 부분 문자열  (0) 2021.07.11
백준[2252] 줄 세우기  (0) 2021.07.10
복사했습니다!