ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ๋ณด์ ์ผํ
dirmathfl 2020. 11. 7. 23:30๋ฌธ์
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ณด์ ์ผํ
["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7]
programmers.co.kr
๋ฌธ์ ํ์ด
์ง์ด๋ ๋ณด์๋ค ์ค ๋ชจ๋ ์ข
๋ฅ์ ๋ณด์์ ์ ์ด๋ 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
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: N์ผ๋ก ํํ (0) | 2020.11.06 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ์ด์ค์ฐ์ ์์ํ (0) | 2020.11.05 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ง๊ฒ๋ค๋ฆฌ (0) | 2020.11.04 |
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฐ์ฅ ๊ธด ํฐ๋ฆฐ๋๋กฌ (0) | 2020.11.03 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ผ๊ทผ ์ง์ (0) | 2020.11.02 |