String ํ์ธ str ์ธ์์์ ์ค๋ณต๋์ง ์์ ์ํ๋ฒณ์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์ผ ๊ธด ๋จ์ด์ ๊ธธ์ด๋ฅผ ๋ฐํํด์ฃผ์ธ์.
str: ํ ์คํธ return: ์ค๋ณต๋์ง ์์ ์ํ๋ฒณ ๊ธธ์ด (์ซ์ ๋ฐํ) str: ํ ์คํธ return: ์ค๋ณต๋์ง ์์ ์ํ๋ฒณ ๊ธธ์ด (์ซ์ ๋ฐํ)
์๋ฅผ ๋ค์ด,
str = "abcabcabc"
return์ 3
=> 'abc' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธ
str = "abcabcabc"
return์ 3
=> 'abc' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธ
str = "aaaaa"
return์ 1
=> 'a' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธ
str = "aaaaa"
return์ 1
=> 'a' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธ
str = "sttrg"
return์ 3
=> 'trg' ๊ฐ ์ ์ผ ๊ธธ๊ธฐ ๋๋ฌธ
์ค๋์ ๋ฌธ์ ๋ ๋์ ํ ์ดํด๊ฐ ๊ฐ์ง ์์๋ค.
enumerate( )
๋ผ๋ ํ์ด์ฌ ๋ด์ฅ ํจ์๋ฅผ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ..!!!
def get_len_of_str(s):
dct = {}
max_so_far = curr_max = start = 0
for index, i in enumerate(s):
if i in dct and dct[i] >= start:
max_so_far = max(max_so_far, curr_max)
curr_max = index - dct[i]
start = dct[i] + 1
else:
curr_max += 1
dct[i] = index
return max(max_so_far, curr_max)
๊ทธ๋ ๋ค๋ฉด ๊ณผ์ฐ ์ด ๋ด์ฅํจ์๋ ์ด๋ค ์ญํ ์ ํ๋ ๊ฒ์ผ๊น? ๋์ ํ ์ด๋ค ์ญํ ์ ํ๋์ง ๊ฐ์ด ์ค์ง๋ฅผ ์๋ ํจ์..!
enumerate
๋ "์ด๊ฑฐํ๋ค"๋ผ๋ ๋ป์ด๋ค. ์ด ํจ์๋ ์์๊ฐ ์๋ ์๋ฃํ(๋ฆฌ์คํธ, ํํ, ๋ฌธ์์ด)์ ์
๋ ฅ์ผ๋ก ๋ฐ์ ์ธ๋ฑ์ค ๊ฐ์ ํฌํจํ๋ enumerate ๊ฐ์ฒด๋ฅผ ๋๋ ค์ค๋ค.
โป ๋ณดํต enumerate ํจ์๋ ๋ค์ ์์ ์ฒ๋ผ for๋ฌธ๊ณผ ํจ๊ป ์์ฃผ ์ฌ์ฉํ๋ค.
์ ์ดํด๋์ง ์์ผ๋ฉด ๋ค์ ์๋ฅผ ๋ณด์.
for i, name in enumerate(['body', 'foo', 'bar']):
print(i, name)
...
0 body
1 foo
2 bar
์์ ๊ฐ๊ณผ ํจ๊ป body, foo, bar๊ฐ ์์๋๋ก ์ถ๋ ฅ๋์๋ค.
์ฆ ์ ์์ ์ ๊ฐ์ด enumerate๋ฅผ for๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด ์๋ฃํ์ ํ์ฌ ์์(index)์ ๊ทธ ๊ฐ์ ์ฝ๊ฒ ์ ์ ์๋ค.
for๋ฌธ์ฒ๋ผ ๋ฐ๋ณต๋๋ ๊ตฌ๊ฐ์์ ๊ฐ์ฒด๊ฐ ํ์ฌ ์ด๋ ์์น์ ์๋์ง ์๋ ค ์ฃผ๋ ์ธ๋ฑ์ค ๊ฐ์ด ํ์ํ ๋ enumerate ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋งค์ฐ ์ ์ฉํ๋ค.