-
[프로그래머스] 자동완성 (2018 KAKAO BLIND RECRUITMENT)ALGORITHM/PROGRAMMERS 2021. 3. 2. 00:00
programmers.co.kr/learn/courses/30/lessons/17685
2021-03-01
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263public class Solution17685 {static class TrieNode {TrieNode[] next;int count = 0;TrieNode() {next = new TrieNode[26];this.count = 0;}}static class Trie {TrieNode root;Trie() {root = new TrieNode();}void insert(String str) {TrieNode node = root;for(int i = 0; i < str.length(); i++) {int idx = str.charAt(i) - 'a';if(node.next[idx] == null) node.next[idx] = new TrieNode();node.next[idx].count++;node = node.next[idx];}}int count(String str) {TrieNode node = root;int cnt = 0;for(int i = 0; i < str.length(); i++) {int idx = str.charAt(i) - 'a';cnt++;if(node.next[idx].count == 1) return cnt;node = node.next[idx];}return cnt;}}public static int solution(String[] words) {int answer = 0;Trie t = new Trie();for (String word : words) {t.insert(word);}for(String word: words) {answer += t.count(word);}return answer;}public static void main(String[] args) {String[] w = {"go", "gone", "guild"};// String[] w = {"abc","def","ghi","jklm"};System.out.println(solution(w));}}cs #문제풀이
Trie 자료구조를 이용해서 풀었다.
count함수에서 cnt++을 해주면서, 만약 node의 count 값이 1이 되면 더 이상 뒤에 글자를 몰라도 되는 것이므로 return 했다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 징검다리 건너기 (2019 카카오 개발자 겨울 인턴십) (0) 2021.03.04 [프로그래머스] 경주로 건설 (2020 카카오 인턴십) (0) 2021.03.02 [프로그래머스] 가사 검색 (2020 KAKAO BLIND RECRUITMENT) (0) 2021.03.01 [프로그래머스] 순위 검색 (2021 KAKAO BLIND RECRUITMENT) (0) 2021.02.12 [프로그래머스] 기둥과 보 설치 (2020 KAKAO BLIND RECRUITMENT) (0) 2021.02.11