문제 링크
- http://icpc.me/16511
사용 알고리즘
- Trie
- 트리 압축
풀이
문자열이 여러 개 주어졌을 때 아래 쿼리를 여러 번 처리해야 합니다.
- 주어진 K개의 문자열 중 정확히 L개의 Prefix인 문자열의 개수
일단 입력으로 들어온 문자열들을 이용해 트라이를 만들어줍시다.
쿼리로 주어진 문자열의 끝 문자를 나타내는 정점들을 체크해준 뒤 트리 압축을 해주면 문제는 아래와 같이 바뀌게 됩니다.
- 주어진 K개의 정점을 체크한 뒤, 서브 트리에서 체크된 정점의 개수가 정확히 L개인 정점에서 부모로 향하는 간선 길이의 총합을 구해서 출력
트라이를 압축을 한 다음, DFS를 이용해 서브 트리에서 체크된 정점의 개수를 구해주면 문제를 풀 수 있습니다.
전체 코드
1 |
|