File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def countSubstrings (self , s : str ) -> int :
3
+ n = len (s )
4
+ dp = [[False ] * n for _ in range (n )] # dp[i][j]๋ s[i:j+1]์ด ํฐ๋ฆฐ๋๋กฌ์ธ์ง ๋ํ๋
5
+ count = 0
6
+
7
+ for length in range (1 , n + 1 ): # ๋ถ๋ถ ๋ฌธ์์ด ๊ธธ์ด
8
+ for i in range (n - length + 1 ): # ์์ ์ธ๋ฑ์ค
9
+ j = i + length - 1 # ๋ ์ธ๋ฑ์ค
10
+
11
+ if length == 1 : # ๊ธธ์ด 1: ํญ์ ํฐ๋ฆฐ๋๋กฌ
12
+ dp [i ][j ] = True
13
+ elif length == 2 : # ๊ธธ์ด 2: ๋ ๋ฌธ์๊ฐ ๊ฐ์ผ๋ฉด ํฐ๋ฆฐ๋๋กฌ
14
+ dp [i ][j ] = (s [i ] == s [j ])
15
+ else : # ๊ทธ ์ธ์ ๊ฒฝ์ฐ: ์ ๋์ด ๊ฐ๊ณ ๋ด๋ถ๊ฐ ํฐ๋ฆฐ๋๋กฌ์ด๋ฉด ์ฐธ
16
+ dp [i ][j ] = (s [i ] == s [j ] and dp [i + 1 ][j - 1 ])
17
+
18
+ if dp [i ][j ]:
19
+ count += 1
20
+
21
+ return count
22
+
23
+
24
+ # ์๊ฐ ๋ณต์ก๋:
25
+ # - ์ด์ค ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ํ์ธํ๋ฏ๋ก O(n^2)
26
+ # - ๊ฐ ํ์ธ์ O(1)์ด๋ฏ๋ก ์ต์ข
์ ์ผ๋ก O(n^2)
27
+
28
+ # ๊ณต๊ฐ ๋ณต์ก๋:
29
+ # - DP ํ
์ด๋ธ(dp)์ O(n^2)์ ๊ณต๊ฐ์ ์ฌ์ฉ
30
+ # - ์ถ๊ฐ ๋ณ์๋ O(1)์ด๋ฏ๋ก ์ ์ฒด ๊ณต๊ฐ ๋ณต์ก๋๋ O(n^2)
You canโt perform that action at this time.
0 commit comments