File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ *
3+ * ์ ๊ทผ ๋ฐฉ๋ฒ :
4+ * - ๊ฐ ๋ฌธ์์ด์์ ํ๋ฌธ ์กฐ๊ฑด ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ ์ค์ฌ์ ๊ธฐ์ค์ผ๋ก ํ์ฅํด๋๊ฐ๊ธฐ ์ํด ํฌ ํฌ์ธํฐ ์ฌ์ฉ
5+ * - ๋ฌธ์๊ฐ ๊ฐ๊ณ ๋ฒ์ ๋ด์ ์๋ ๊ฒฝ์ฐ ํ์ฅํด๋๊ฐ๋ฉด์ ํ์ ์
๋ฐ์ดํธ
6+ * - ํ์ ํ๋ฌธ๊ณผ ๋ค๋ฅด๊ฒ ์ง์ ํ๋ฌธ์ ์ค์ฌ์ 2๋ฌธ์์์ ์์๋์ด์ผ ํ๋๊น ์ธ๋ฑ์ค ๋ณ๋ ์ฒ๋ฆฌ
7+ *
8+ * ์๊ฐ๋ณต์ก๋ : O(n^2)
9+ * - ๋ฌธ์์ด ๊ธธ์ด๊ฐ n์ผ ๋, for๋ฌธ์์ ๊ฐ ๋ฌธ์๋ง๋ค ์ต๋ ๋ฌธ์์ด ๊ธธ์ด๊น์ง ๋น๊ตํ๋๊น O(n^2)
10+ *
11+ * ๊ณต๊ฐ๋ณต์ก๋ : O(1)
12+ *
13+ */
14+
15+ function countPalindromes ( s : string , left : number , right : number ) : number {
16+ let count = 0 ;
17+
18+ while ( 0 <= left && right < s . length && s [ left ] === s [ right ] ) {
19+ count ++ ;
20+ left -- ;
21+ right ++ ;
22+ }
23+
24+ return count ;
25+ }
26+
27+ function countSubstrings ( s : string ) : number {
28+ let count = 0 ;
29+
30+ for ( let i = 0 ; i < s . length ; i ++ ) {
31+ // ํ์ ํ๋ฌธ ์นด์ดํธ
32+ count += countPalindromes ( s , i , i ) ;
33+ // ์ง์ ํ๋ฌธ ์นด์ดํธ
34+ count += countPalindromes ( s , i , i + 1 ) ;
35+ }
36+ return count ;
37+ }
You canโt perform that action at this time.
0 commit comments