chyam

[프로그래머스 Lv3, python] - 보석 쇼핑 본문

프로그래머스/LV3

[프로그래머스 Lv3, python] - 보석 쇼핑

chyam_eun 2026. 5. 8. 15:33

https://school.programmers.co.kr/learn/courses/30/lessons/67258

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

from collections import defaultdict

def solution(gems):
    total = len(set(gems))

    dic = defaultdict(int)

    left = 0
    answer = [0, len(gems) - 1]

    for right in range(len(gems)):
        dic[gems[right]] += 1 # 오른쪽으로 이동!

        # 모든 종류 포함하면
        while len(dic) == total:
            # 더 짧은 구간 갱신!
            if right - left < answer[1] - answer[0]:
                answer = [left, right]

            # 왼쪽 축소
            dic[gems[left]] -= 1

            if dic[gems[left]] == 0: # 존재 X
                del dic[gems[left]]

            left += 1

    return [answer[0] + 1, answer[1] + 1]