어디까지 갈 수 있을까?
[투포인터] 프로그래머스 보석 쇼핑 본문
문제링크 https://programmers.co.kr/learn/courses/30/lessons/67258
1. 최소 길이를 구할 땐 투포인터 알고리즘을 생각해보자
2. 0 인덱스를 갖는 값은 미리 넣어준다
[답코드]
from collections import defaultdict
def solution(gems):
gems_len=len(set(gems))
dic=defaultdict(int)
dic[gems[0]]=1
answer=[]
start=0; end=0
while start<len(gems) and end<len(gems):
if len(dic)==gems_len: #길이저장
answer.append([start, end])
dic[gems[start]]-=1
if dic[gems[start]]==0 : del dic[gems[start]]
start+=1
else:
end += 1
if end==len(gems) : break
dic[gems[end]]+=1
answer.sort(key=lambda x:((x[1]-x[0]), x[0]))
return [answer[0][0]+1, answer[0][1]+1]
728x90
'알고리즘 > 문제' 카테고리의 다른 글
[파이썬] 백준 16926 배열 돌리기 1, 16927 배열 돌리기 2 (0) | 2021.09.24 |
---|---|
[딕셔너리/이분탐색] 프로그래머스 순위검색 (0) | 2021.06.22 |
[비트마스킹] 백준 1062 가르침 (0) | 2021.05.28 |
[BFS] 백준 16940 BFS 스페셜 저지 (0) | 2021.05.27 |
[DFS] 프로그래머스 여행경로 (0) | 2021.05.14 |
Comments