코딩테스트
[Python] 프로그래머스 / 2020 카카오 인턴십 / 보석 쇼핑
LOEWEN
2024. 10. 3. 21:55
728x90
정답 코드
def solution(gems):
gems_unique_count = len(set(gems))
gems_dict = dict()
s, e = 0, 0
gems_dict[gems[0]] = 1
answer = [0, len(gems) - 1]
while e < len(gems):
if len(gems_dict) == gems_unique_count:
if e - s < answer[1] - answer[0]:
answer = [s, e]
gems_dict[gems[s]] -= 1
if gems_dict[gems[s]] == 0:
del gems_dict[gems[s]]
s += 1
else:
e += 1
if e < len(gems):
gems_dict[gems[e]] = gems_dict.get(gems[e], 0) + 1
return [answer[0] + 1, answer[1] + 1]