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