Skip to content

Commit 598e2ab

Browse files
Create taurus09318976.py
1 parent ff6e486 commit 598e2ab

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
'''
2+
๋ฌธ์ œํ•ต์‹ฌ : palindrome์ธ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒƒ์ž„
3+
ํ•ด๊ฒฐ๋ฐฉ๋ฒ• :
4+
1) ๋ฌธ์ž์—ด์˜ ๊ฐ ์œ„์น˜๋ฅผ palindrome ์ค‘์‹ฌ์œผ๋กœ ์ƒ๊ฐํ•จ
5+
2) ์ค‘์‹ฌ์—์„œ ์–‘์ชฝ์œผ๋กœ ํ™•์žฅํ•˜๋ฉด์„œ palindrome ์ธ์ง€ ํ™•์ธ
6+
3) ํ™€์ˆ˜ ๊ธธ์ด palindrome (์ค‘์‹ฌ์ด ํ•œ ๊ธ€์ž)๊ณผ ์ง์ˆ˜ ๊ธธ์ด palindrome (์ค‘์‹ฌ์ด ๋‘ ๊ธ€์ž ์‚ฌ์ด) ๋ชจ๋‘ ํ™•์ธ
7+
8+
์‹œ๊ฐ„ ๋ณต์žก๋„: O(nยฒ)
9+
์™ธ๋ถ€ ๋ฐ˜๋ณต๋ฌธ์ด n๋ฒˆ ์‹คํ–‰๋จ (n์€ ๋ฌธ์ž์—ด ๊ธธ์ด)
10+
๊ฐ ์ค‘์‹ฌ์—์„œ ์ตœ์•…์˜ ๊ฒฝ์šฐ n๋ฒˆ๊นŒ์ง€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Œ
11+
๋”ฐ๋ผ์„œ ์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n ร— n) = O(nยฒ)์ž„
12+
13+
๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
14+
์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ช‡ ๊ฐœ์˜ ๋ณ€์ˆ˜(count, left, right, palindrome_count)๋ฟ์ž„
15+
์ž…๋ ฅ ํฌ๊ธฐ์— ๊ด€๊ณ„์—†์ด ์ผ์ •ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ O(1)์ž„
16+
'''
17+
18+
class Solution:
19+
def countSubstrings(self, s: str):
20+
count = 0 # ์ „์ฒด ํšŒ๋ฌธ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
21+
22+
for i in range(len(s)): # ๋ฌธ์ž์—ด์˜ ๊ฐ ์ธ๋ฑ์Šค๋ฅผ ์ˆœํšŒ
23+
# i๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š” ํ™€์ˆ˜ ๊ธธ์ด ํšŒ๋ฌธ๋“ค์„ ์ฐพ์•„์„œ ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•จ
24+
count += self.expandAroundCenter(s, i, i)
25+
# i์™€ i+1 ์‚ฌ์ด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•˜๋Š” ์ง์ˆ˜ ๊ธธ์ด ํšŒ๋ฌธ๋“ค์„ ์ฐพ์•„์„œ ๊ฐœ์ˆ˜๋ฅผ ๋”ํ•จ
26+
count += self.expandAroundCenter(s, i, i + 1)
27+
28+
return count # ์ด ํšŒ๋ฌธ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜
29+
30+
def expandAroundCenter(self, s: str, left: int, right: int) -> int:
31+
palindrome_count = 0 # ์ด ์ค‘์‹ฌ์—์„œ ์ฐพ์€ ํšŒ๋ฌธ ๊ฐœ์ˆ˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”
32+
33+
# ์กฐ๊ฑด: ์™ผ์ชฝ ์ธ๋ฑ์Šค๊ฐ€ 0 ์ด์ƒ์ด๊ณ , ์˜ค๋ฅธ์ชฝ ์ธ๋ฑ์Šค๊ฐ€ ๋ฌธ์ž์—ด ๊ธธ์ด ๋ฏธ๋งŒ์ด๊ณ ,
34+
# ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ๋ฌธ์ž๊ฐ€ ๊ฐ™์„ ๋•Œ
35+
while left >= 0 and right < len(s) and s[left] == s[right]:
36+
palindrome_count += 1 # ํšŒ๋ฌธ์„ ํ•˜๋‚˜ ์ฐพ์•˜์œผ๋ฏ€๋กœ ๊ฐœ์ˆ˜ ์ฆ๊ฐ€
37+
left -= 1 # ๋‹ค์Œ ํ™•์žฅ์„ ์œ„ํ•ด ์™ผ์ชฝ ์ธ๋ฑ์Šค๋ฅผ 1 ๊ฐ์†Œ
38+
right += 1 # ๋‹ค์Œ ํ™•์žฅ์„ ์œ„ํ•ด ์˜ค๋ฅธ์ชฝ ์ธ๋ฑ์Šค๋ฅผ 1 ์ฆ๊ฐ€
39+
40+
return palindrome_count # ์ด ์ค‘์‹ฌ์—์„œ ์ฐพ์€ ์ด ํšŒ๋ฌธ ๊ฐœ์ˆ˜ ๋ฐ˜ํ™˜
41+
42+
43+

0 commit comments

Comments
ย (0)