-
[프로그래머스] 보석쇼핑코딩테스트 2023. 6. 9. 14:29
function solution(gems) { var answer = []; let answerArr = []; let gemsObj = {}; let left = 0; let right = 0; //아마 윈도우 문제 //일단 몇개의 보석이 있는지 찾고, 윈도우 만들어서 보석 다 있는지 확인. for(let i=0;i<gems.length;i++){ if(!gemsObj[gems[i]]){ gemsObj[gems[i]] = 0; } } let gemsLen = Object.keys(gemsObj).length; while(left<=right&&right<=gems.length){ if(gemsLen>0){ if(gemsObj[gems[right]]===0){ gemsLen-- } gemsObj[gems[right]]+=1 right++ } else if(gemsLen===0){ answerArr.push([left,right]) gemsObj[gems[left]]-=1 if(gemsObj[gems[left]]===0){ gemsLen++ } left++ } } let min = answerArr[0] for(let i=1;i<answerArr.length;i++){ if(answerArr[i][1]-answerArr[i][0]<min[1]-min[0]){ min = answerArr[i] } } answer = [min[0]+1,min[1]] return answer; }
투포인터를 이용하여 풀었다.
'코딩테스트' 카테고리의 다른 글
[다시풀기/프로그래머스] 이분탐색 (0) 2023.06.09 [못풀었다/프로그래머스] 불량사용자 (0) 2023.06.09 [예외처리못함/프로그래머스] 베스트앨범 (0) 2023.06.07 [못풀었다/프로그래머스] 단속카메라 (0) 2023.06.06 [다시풀기/단어변환] (0) 2023.06.05