본문 바로가기
알고리즘/프로그래머스

[Python] 프로그래머스 보석 쇼핑

by 컴공맨 2021. 5. 10.
 

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

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

programmers.co.kr


풀이

투포인터를 사용하여 문제에서 주어진 조건대로 처리하여 해결했습니다.


코드

def solution(gems):
    answer = []

    unique_gem = set(gems)
    select_gem = dict()
    left = 0
    right = 0
    select_gem[gems[0]] = 1
    minLen = 987654321

    while left < len(gems) and right < len(gems):
        curLen = 0
        if len(select_gem) == len(unique_gem):
            curLen = right - left

            if minLen > curLen:
                minLen = curLen
                answer = [left + 1, right + 1]

            select_gem[gems[left]] -= 1

            if select_gem[gems[left]] == 0:
                del select_gem[gems[left]]

            left += 1
        else:
            right += 1

            if right < len(gems):
                if gems[right] in select_gem:
                    select_gem[gems[right]] += 1
                else:
                    select_gem[gems[right]] = 1

    return answer

 

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com