코테 공부

프로그래머스 보석 쇼핑 (파이썬 풀이)

moonsun623 2021. 12. 1. 19:11
반응형

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

 

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

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

programmers.co.kr

 

내가 한 풀이

def solution(gems):
    answer = []
    start,end=0,0
    short=len(gems)+1
    category=len(set(gems))
    bag={}
    while end<len(gems):
        if gems[end] not in bag:
            bag[gems[end]]=1
        else:
            bag[gems[end]]+=1
        end+=1
        
        if len(bag)==category:
            while start<end:
                if bag[gems[start]]>1:
                    bag[gems[start]]-=1
                    start+=1
                elif short>end-start:
                    short=end-start
                    answer=[start+1,end]
                    break
                else:
                    break
            
    return answer

투포인터 알고리즘을 이용해 배열의 처음부터 끝까지 탐색하도록 구현했다.