문제풀이/기타

[파이썬] [Two] Pro 보석 쇼핑

승무_ 2022. 2. 22. 09:33

문제

https://programmers.co.kr/learn/courses/30/lessons/67258?language=python3 

 

코딩테스트 연습 - 보석 쇼핑

["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7]

programmers.co.kr

 

코드

import sys
from collections import defaultdict
def solution(gems):
    s1=set(gems)
    answer=[0,len(gems)]
    start,end=0,0
    dict=defaultdict(int)
    while end<len(gems):
        dict[gems[end]]+=1
        end+=1

        if len(dict)==len(s1):
            while start<end:
                //최소 1개를 유지해야 하므로 1개 이면 break
                if dict[gems[start]]<2:
                    break
                dict[gems[start]]-=1
                start+=1

            if answer[1] + 1 - answer[0] > end - start:
                answer = [start + 1, end]
    return answer