풀이
투포인터를 사용하여 문제에서 주어진 조건대로 처리하여 해결했습니다.
코드
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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 프로그래머스 셔틀버스 (0) | 2021.05.16 |
---|---|
[Python] 프로그래머스 추석 트래픽 (0) | 2021.05.02 |
[Python] 프로그래머스 n진수 게임 (0) | 2021.05.01 |
[Python] 프로그래머스 파일명 정렬 (0) | 2021.04.25 |
[Python] 프로그래머스 압축 (0) | 2021.04.25 |