ํฐ์คํ ๋ฆฌ ๋ทฐ
๐จ๐ป ์ฝ๋ฉํ
์คํธ/ํ๋ก๊ทธ๋๋จธ์ค
ํ๋ก๊ทธ๋๋จธ์ค: ๋ณด์ ์ผํ
dirmathfl 2020. 11. 7. 23:30728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
์ง์ด๋ ๋ณด์๋ค ์ค ๋ชจ๋ ์ข ๋ฅ์ ๋ณด์์ ์ ์ด๋ 1๊ฐ ์ด์ ํฌํจํ๋ ๊ฐ์ฅ ์งง์ ๊ตฌ๊ฐ์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค. ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์์ ํ๊ฒ ๋๋ฉด ํจ์จ์ฑ์ ํต๊ณผํ ์ ์๋ค. ๊ณ ๋ฏผ์ ํ๋ค๊ฐ ์๋ฃจ์ ์ ์ฐธ์กฐํ์๋๋ฐ, `ํฌํฌ์ธํฐ`๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํ๋ ๋ฌธ์ ์๋ค.
๊ตฌํํ๋ ๋ฐฉ์์ ์๋ฃจ์ ๊ณผ ๊ฐ์ด ๊ตฌํํ๋ฉด, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ํ์ `ํฌํฌ์ธํฐ`๋ฅผ ํ์ฉํ๋ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ์ด๋ณด์ง ์์ ํ์ด๋ฅผ ๋ณด๊ณ ๋์์ผ ์ดํด๋ฅผ ํ ์ ์์๋ค.๐ค
์ฝ๋
def solution(gems):
start, end = 0, 0
gem_num = len(set(gems))
gem_dict = {gems[0]: 1}
answer = [0,len(gems)]
while start < len(gems) and end < len(gems):
if len(gem_dict) < gem_num:
if end == len(gems) - 1:
break
end += 1
if gem_dict.get(gems[end]) is None:
gem_dict[gems[end]] = 1
else:
gem_dict[gems[end]] += 1
else:
if end - start < answer[1] - answer[0]:
answer = [start+1, end+1]
if gem_dict[gems[start]] == 1:
del gem_dict[gems[start]]
else:
gem_dict[gems[start]] -= 1
start += 1
return answer
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: N์ผ๋ก ํํ (0) | 2020.11.06 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ์ด์ค์ฐ์ ์์ํ (0) | 2020.11.05 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ง๊ฒ๋ค๋ฆฌ (0) | 2020.11.04 |
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (0) | 2020.11.03 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ผ๊ทผ ์ง์ (0) | 2020.11.02 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ