코딩테스트

[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]