반응형
const isTrue = (count, cnt) => {
for(let i=0;i<cnt;i++) {
if(count[i] === 0) return false;
}
return true;
}
function solution(gems) {
const len = gems.length;
const hash = new Map();
let cnt = 0;
for(let i=0; i<len; i++) {
if(!hash.has(gems[i])) {
hash.set(gems[i], cnt++);
}
}
let count = Array(cnt).fill(0);
let front = 0;
let rear = 0;
let MinRange = 987654321;
let answer = [];
while(front <= rear) {
if(isTrue(count, cnt)){
if(MinRange > rear - front) {
MinRange = rear - front;
answer = [front + 1, rear];
}
const num = hash.get(gems[front++]);
count[num]--;
} else {
if(rear + 1 > len)
break;
const num = hash.get(gems[rear++]);
count[num]++;
}
}
return answer;
}
반응형
'ProgramSoliving' 카테고리의 다른 글
프로그래머스 : 수식최대화 JAVA (0) | 2021.09.06 |
---|---|
프로그래머스: 위클리코드 3주차 (퍼즐조각 채우기) (0) | 2021.08.20 |
프로그래머스 : 다단계 칫솔 판매 (JavaScript) (0) | 2021.08.03 |
프로그래머스 : 표 편집 (JavaScript) (0) | 2021.08.03 |
프로그래머스 : 블록게임 JavaScript (0) | 2021.07.02 |