2021. 5. 27. 22:32ใ๐ฑ Algorithm
๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ
1. s[::-1], ํ์ด์ฌ์ ๋ฌธ์์ด ์ญ์ ๋ฉ์๋
2. for ๋ฌธ ๋ฒ์์ก๊ธฐ
์ ๋ต ์ฝ๋
def palindrome(s):
if len(s) < 2 or s == s[::-1]:
return True
def solution(s):
if len(s) < 2 or s == s[::-1]:
return len(s)
for cur in range(len(s), 0, -1):
for start in range(len(s)):
currS = s[start: start + cur]
if palindrome(currS):
# result.append(len(s[start: start + cur]))
return len(currS)
if start + cur > len(s):
break
์ ๊ทผ ๊ณผ์
palindrome() ํจ์๋ฅผ ๋ฐ๋ก ์ ์ํ์์ต๋๋ค.
์ธ์๋ก ๋ค์ด์ค๋ ๋ฌธ์์ด์ด ํฐ๋ฆฐ๋๋กฌ์ธ์ง ํ์ธํ์ฌ true๋ฉด ๋ฆฌํดํฉ๋๋ค.
s[0] == s[-1] ์กฐ๊ฑด์ด ๋ง์ ๋ s[1:-1] ๋ก ์ฌ๋ผ์ด์ฑํ์ฌ, ๋ค์ palindrome() ํจ์์ ์ธ์๋ก ๋ฃ๋ ์ฌ๊ท๋ฐฉ๋ฒ์ ํํ์ต๋๋ค.
์๋ ์ฃผ์ ์น ๋ถ๋ถ์ฒ๋ผ ์ฝ๋๋ฅผ ์งฐ์ง๋ง, ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ต๋๋ค.
def palindrome(s):
if len(s) < 2 or s == s[::-1]:
return True
# ์๋ฒฝํ ๋ก์ง ๊ฐ์์ง๋ง, ์ค์ ์ฐ์ฐ ํ์๋ง ๋๋ ค๊ฐ๋ค.
# if s[0] == s[-1]:
# return palindrome(s[1:-1])
ํ์ง๋ง ๊ฐ์ฅ ๋ ์๋ฆฌ ๊ธ์๋ฅผ ๋น๊ตํ๋ฉฐ ์ฌ๊ท๋ฅผ ์น๊ธฐ์ ์๊ฐ๋ณต์ก๋์์ ์คํจํฉ๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๊ฐํด์ผ ํฉ๋๋ค.
palindrome()์ ์ฒ์ ๋ค์ด์ค๋ ๋ฌธ์์ด s๊ฐ palindrome ํ์ง ๊ณง ๋ฐ๋ก ์ฒดํฌํ๋ ๊ฒ์ ๋๋ค. (์ฌ๊ท ๋์ )
ํ์ด์ฌ์ ๋งค์ง ๋ฉ์๋ s[::-1]์ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ๋ฌธ์์ด๊ณผ ๋ค์ง์ด์ง ๋ฌธ์์ด์ ๋น๊ตํ์ฌ True์ผ ๋ ๋ฆฌํดํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด palindrome()์ผ๋ก ๋์ง ์ธ์ s๋ ์ด๋ป๊ฒ ์ ํ๊ฒ ๋๋ ๊ฑธ๊น์?
๋จผ์ ์ด์ค for ๋ฌธ์ ๊ตฌํํฉ๋๋ค.
์์ชฝ for๋ฌธ์์ start ๋ณ์๋ก, ๋ฌธ์์ด s์ ์์์ ์ ์ง์ ํ๊ณ ,
๋ฐ๊นฅ for๋ฌธ์์๋ cur ๋ณ์๋ก, ๋ฌธ์์ด s์ ๋์ง์ (๋ฒ์)๋ฅผ ์ง์ ํฉ๋๋ค.
์ด๋ start + cur ์ ๋ฒ์๊ฐ ์ธ๋ฑ์ค ์ด๊ณผ๊ฐ ๋ ๊ฒฝ์ฐ breakํ์ฌ start ๋ณ์๋ฅผ 0์ผ๋ก ์ด๊ธฐํ ํ ์ ์์ต๋๋ค.
cur ๋ณ์๋ ๋ฌธ์์ด s์ ๊ธธ์ด len(s)๋ก ์์ํ์ฌ 1๊น์ง ๋ด๋ ค๊ฐ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ palindrome() ํจ์์์ true๋ก ๋ฆฌํด๋๋ ๋ฌธ์์ด์ด, ๊ณง ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ์ด ๋ฉ๋๋ค.
def solution(s):
if len(s) < 2 or s == s[::-1]:
return len(s)
for cur in range(len(s), 0, -1):
for start in range(len(s)):
currS = s[start: start + cur]
if palindrome(currS):
# result.append(len(s[start: start + cur]))
return len(currS)
if start + cur > len(s):
break
'๐ฑ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์ ๊ท์์ด๋์ถ์ฒ (0) | 2021.07.22 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด ํ์ด์ฌ (0) | 2021.07.21 |
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ์์ฃผํ์ง ๋ชปํ ์ ์ ํ์ด์ฌ (0) | 2021.06.30 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฐฉ๊ธ ๊ทธ ๊ณก ํ์ด์ฌ (0) | 2021.05.22 |
[201018] ํ๋ก๊ทธ๋๋จธ์ค ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2020.10.20 |