Skip to content

Commit fdf1dae

Browse files
committed
solve 1
1 parent a353a02 commit fdf1dae

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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)

0 commit comments

Comments
ย (0)