File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed 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
+ // stack๋ฌธ์ . open,close์ ๋ฐ๋ผ ์คํ์ฒ๋ฆฌ
7
+ // ์ต์ข
stack ๋น์์ ธ์๋์ง ๋ง์ง๋ง ํ์ธ๊น์ง.
8
+ const stack = [ ] ;
9
+ // open,close Bracket index ์์น๋ก ์ง๊ถ ํ๋จํ ์์
10
+ const openBracket = [ '(' , '[' , '{' ] ;
11
+ const closeBracket = [ ')' , ']' , '}' ] ;
12
+ // ๋ฐํํ ๊ฒฐ๊ณผ๊ฐ flag
13
+ let result = true ;
14
+
15
+ [ ...s ] . map ( ( item ) => {
16
+ // indexOf์์ฒด๋ ์ ํ๊ฒ์์ด๋ผ O(n)์ด์ง๋ง ๋ฐ์ดํฐ ์์ด 3์ผ๋ก ๊ณ ์ ๋์ด์์ผ๋ฏ๋ก O(1)๋ก ๋ณผ ์ ์์
17
+ const itemIndexAtOpenBracket = openBracket . indexOf ( item ) ;
18
+ const itemIndexAtCloseBracket = closeBracket . indexOf ( item ) ;
19
+ // openBracket ํ์
20
+ if ( itemIndexAtOpenBracket > - 1 ) {
21
+ // push,pop ๋ชจ๋ O(1) ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง. ๋์ ์์ ์ถ๊ฐ์ ๊ฑฐ์ด๋ฏ๋ก
22
+ stack . push ( item ) ;
23
+ }
24
+ // clseBracket ํ์
25
+ else if ( itemIndexAtCloseBracket > - 1 ) {
26
+ const target = stack . pop ( ) ;
27
+ if ( target !== openBracket [ itemIndexAtCloseBracket ] ) {
28
+ result = false ;
29
+ }
30
+ }
31
+ } ) ;
32
+
33
+ if ( stack . length !== 0 ) {
34
+ result = false ;
35
+ }
36
+
37
+ return result ;
38
+ } ;
39
+
40
+ // ์๊ฐ๋ณต์ก๋ : O(n)
41
+ // ๊ณต๊ฐ๋ณต์ก๋ : O(n)
You canโt perform that action at this time.
0 commit comments