Skip to content

Commit 9747d60

Browse files
committed
Solve : 자동완성
1 parent ae012c8 commit 9747d60

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

Level4/자동완성.js

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
// Solution 1
2+
function makeTrie(words) {
3+
const root = {};
4+
5+
for (const word of words) {
6+
let current = root;
7+
8+
for (const letter of word) {
9+
if (!current[letter]) {
10+
current[letter] = [0, {}];
11+
}
12+
13+
current[letter][0] = 1 + (current[letter][0] || 0);
14+
current = current[letter][1];
15+
}
16+
}
17+
18+
return root;
19+
}
20+
21+
function solution1(words) {
22+
let totalCount = 0;
23+
const trie = makeTrie(words);
24+
25+
for (const word of words) {
26+
let count = 0;
27+
let current = trie;
28+
29+
for (const [index, letter] of [...word].entries()) {
30+
count += 1;
31+
32+
if (current[letter][0] <= 1) {
33+
break;
34+
}
35+
36+
current = current[letter][1];
37+
}
38+
39+
totalCount += count;
40+
}
41+
42+
return totalCount;
43+
}

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,4 @@
6161
| 2주차<br />(12.06. ~ 12.12.) | `Level 1`<br />`Level 1`<br />`Level 1`<br />`Level 1`<br />`Level 1`<br />`Level 1`<br />`Level 1` | [로또의 최고 순위와 최저 순위](https://programmers.co.kr/learn/courses/30/lessons/77484)<br />[소수 만들기](https://programmers.co.kr/learn/courses/30/lessons/12977)<br />[비밀지도](https://programmers.co.kr/learn/courses/30/lessons/17681)<br />[2016년](https://programmers.co.kr/learn/courses/30/lessons/12901)<br />[3진법 뒤집기](https://programmers.co.kr/learn/courses/30/lessons/68935)<br />[예산](https://programmers.co.kr/learn/courses/30/lessons/12982)<br />[최소직사각형](https://programmers.co.kr/learn/courses/30/lessons/86491) | [JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/로또의최고순위와최저순위.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/소수만들기.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/비밀지도.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/2016년.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/3진법뒤집기.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/예산.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/최소직사각형.js) (2차 풀이) |
6262
| 3주차<br />(12.13. ~ 12.19.) | `Level 1`<br />`Level 1`<br />`Level 1`<br />`Level 1`<br />`Level 2`<br />`Level 2`<br />`Level 2` | [나머지가 1이 되는 수 찾기](https://programmers.co.kr/learn/courses/30/lessons/87389)<br />[폰켓몬](https://programmers.co.kr/learn/courses/30/lessons/1845)<br />[다트 게임](https://programmers.co.kr/learn/courses/30/lessons/17682)<br />[신규 아이디 추천](https://programmers.co.kr/learn/courses/30/lessons/72410)<br />[가장 큰 수](https://programmers.co.kr/learn/courses/30/lessons/42746)<br />[H-Index](https://programmers.co.kr/learn/courses/30/lessons/42747)<br />[피보나치 수](https://programmers.co.kr/learn/courses/30/lessons/12945) | [JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/나머지가1이되는수찾기.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/폰켓몬.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/다트게임.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/신규아이디추천.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/가장큰수.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/H-Index.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/피보나치수.js) (2차 풀이) |
6363
| 4주차<br />(12.20. ~ 12.26.) | `Level 2`<br />`Level 2`<br />`Level 2`<br />`Level 2`<br />`Level 2`<br />`Level 3`<br />`Level 3` | [타겟 넘버](https://programmers.co.kr/learn/courses/30/lessons/43165)<br />[괄호 회전하기](https://programmers.co.kr/learn/courses/30/lessons/76502)<br />[숫자의 표현](https://programmers.co.kr/learn/courses/30/lessons/12924)<br />[올바른 괄호](https://programmers.co.kr/learn/courses/30/lessons/12909)<br />[프린터](https://programmers.co.kr/learn/courses/30/lessons/42587)<br />[베스트앨범](https://programmers.co.kr/learn/courses/30/lessons/42579)<br />[가장 먼 노드](https://programmers.co.kr/learn/courses/30/lessons/49189) | [JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/타겟넘버.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/괄호회전하기.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/숫자의표현.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/올바른괄호.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/프린터.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level3/베스트앨범.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level3/가장먼노드.js) |
64-
| 5주차<br />(12.27. ~ 12.31.) | `Level 3`<br />`Level 3`<br />`Level 2`<br />`Level 1` | [입국심사](https://programmers.co.kr/learn/courses/30/lessons/43238)<br />[가장 먼 노드](https://programmers.co.kr/learn/courses/30/lessons/49189)<br />[큰 수 만들기](https://programmers.co.kr/learn/courses/30/lessons/42883)<br />[소수 찾기](https://programmers.co.kr/learn/courses/30/lessons/12921) | [JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level3/입국심사.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level3/가장먼노드.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/큰수만들기.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/소수찾기.js) (3차 풀이) |
64+
| 5주차<br />(12.27. ~ 12.31.) | `Level 3`<br />`Level 3`<br />`Level 2`<br />`Level 1`<br />`Level 4` | [입국심사](https://programmers.co.kr/learn/courses/30/lessons/43238)<br />[가장 먼 노드](https://programmers.co.kr/learn/courses/30/lessons/49189)<br />[큰 수 만들기](https://programmers.co.kr/learn/courses/30/lessons/42883)<br />[소수 찾기](https://programmers.co.kr/learn/courses/30/lessons/12921)<br />[자동완성](https://programmers.co.kr/learn/courses/30/lessons/17685) | [JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level3/입국심사.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level3/가장먼노드.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level2/큰수만들기.js) (2차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level1/소수찾기.js) (3차 풀이)<br />[JS](https://github.com/JeongHwan-dev/programmers-solving-with-js/blob/master/Level4/자동완성.js) |

0 commit comments

Comments
 (0)