File tree Expand file tree Collapse file tree 3 files changed +111
-0
lines changed
container-with-most-water
design-add-and-search-words-data-structure Expand file tree Collapse file tree 3 files changed +111
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {number[] } height
3
+ * @return {number }
4
+ */
5
+ var maxArea = function ( height ) {
6
+ // 더 낮은 쪽을 안쪽으로 이동하는 방식으로
7
+
8
+ let start = 0 ;
9
+ let end = height . length - 1 ;
10
+ let res = - 1 ;
11
+ while ( start <= end ) {
12
+ const v = Math . min ( height [ start ] , height [ end ] ) * ( end - start ) ;
13
+ if ( v > res ) {
14
+ res = v ;
15
+ }
16
+
17
+ if ( height [ start ] > height [ end ] ) {
18
+ end -= 1 ;
19
+ } else {
20
+ start += 1 ;
21
+ }
22
+ }
23
+ return res ;
24
+ } ;
Original file line number Diff line number Diff line change
1
+ var WordDictionary = function ( ) {
2
+ this . trie = { } ; // Trie 루트 노드
3
+ } ;
4
+
5
+ /**
6
+ * @param {string } word
7
+ * @return {void }
8
+ */
9
+ WordDictionary . prototype . addWord = function ( word ) {
10
+ let current = this . trie ;
11
+
12
+ // 각 문자마다 노드 생성
13
+ for ( let i = 0 ; i < word . length ; i ++ ) {
14
+ const char = word [ i ] ;
15
+ if ( ! current [ char ] ) {
16
+ current [ char ] = { } ;
17
+ }
18
+ current = current [ char ] ;
19
+ }
20
+
21
+ // 단어의 끝 표시
22
+ current . isEnd = true ;
23
+ } ;
24
+
25
+ /**
26
+ * @param {string } word
27
+ * @return {boolean }
28
+ */
29
+ WordDictionary . prototype . search = function ( word ) {
30
+ return dfs ( word , 0 , this . trie ) ;
31
+ } ;
32
+
33
+ /**
34
+ * @param {string } word - 검색할 단어
35
+ * @param {number } index - 현재 검사 중인 문자 인덱스
36
+ * @param {object } node - 현재 Trie 노드
37
+ * @return {boolean }
38
+ */
39
+ function dfs ( word , index , node ) {
40
+ // 단어 끝에 도달했으면 isEnd 확인
41
+ if ( index === word . length ) {
42
+ return ! ! node . isEnd ;
43
+ }
44
+
45
+ const char = word [ index ] ;
46
+
47
+ if ( char === '.' ) {
48
+ // '.'인 경우: 모든 자식 노드를 탐색
49
+ for ( let key in node ) {
50
+ if ( key !== 'isEnd' ) {
51
+ // isEnd 속성은 제외
52
+ if ( dfs ( word , index + 1 , node [ key ] ) ) {
53
+ return true ;
54
+ }
55
+ }
56
+ }
57
+ return false ;
58
+ } else {
59
+ // 일반 문자인 경우: 해당 문자의 노드로 이동
60
+ if ( ! node [ char ] ) {
61
+ return false ;
62
+ }
63
+ return dfs ( word , index + 1 , node [ char ] ) ;
64
+ }
65
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @param {string } s
3
+ * @return {boolean }
4
+ */
5
+ var isValid = function ( s ) {
6
+ const match = {
7
+ ')' : '(' ,
8
+ ']' : '[' ,
9
+ '}' : '{' ,
10
+ } ;
11
+ if ( match [ s [ 0 ] ] ) return false ;
12
+ const stack = [ ] ;
13
+ for ( const bracket of s ) {
14
+ if ( bracket == '(' || bracket == '{' || bracket == '[' ) stack . push ( bracket ) ;
15
+ else {
16
+ const openBracket = stack . pop ( ) ;
17
+ if ( match [ bracket ] != openBracket ) return false ;
18
+ }
19
+ }
20
+ if ( stack . length > 0 ) return false ;
21
+ return true ;
22
+ } ;
You can’t perform that action at this time.
0 commit comments