https://school.programmers.co.kr/learn/courses/30/lessons/67258
✅ Solution
- 투 포인터를 이용해서 문제를 풀었다.
- end를 len(gems)-1까지 증가시키면서 보석을 추가해준다.
- Counter을 이용해 가진 보석의 종류를 세고 이때 가진 보석의 종류가 전체 보석의 종류와 같을 때,
- 해당 인덱스를 answer에 추가해준다.
- 그리고 start를 증가시켜가면서 다시 위 과정을 반복한다.
- answer을 정렬하고 첫 번째 요소를 리턴한다.
✅ Code
from collections import Counter
def solution(gems):
answer = []
gemCnt = len(set(gems))
gemList = Counter()
start = 0
for end in range(len(gems)):
gemList[gems[end]] += 1
while len(gemList) == gemCnt:
answer.append((start + 1, end + 1))
gemList[gems[start]] -= 1
if not gemList[gems[start]]:
del gemList[gems[start]]
start += 1
return sorted(answer, key=lambda x: (x[1] - x[0]))[0]
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level 4 - 가사 검색 (Python) (2) | 2023.03.09 |
---|---|
[프로그래머스] Level 4 - 무지의 먹방 라이브 (Python) (0) | 2023.03.05 |
[프로그래머스] Level 3 - 불량 사용자 (Python) (0) | 2022.07.07 |
[프로그래머스] Level 3 - 표 편집 (Python) (0) | 2022.07.07 |
[프로그래머스] Level 3 - [1차] 셔틀버스 (Python) (0) | 2022.07.06 |