[프로그래머스 Lv.3] 2020 카카오 인턴 - 보석 쇼핑

김민지·2023년 8월 23일
0

✨ 문제 ✨


✨ 정답 ✨

function solution(gems) {
    const cnt = new Set(gems).size;
    var ans = [1, gems.length];

    var l = 0, r = 0;
    const hit = new Map();
    hit.set(gems[0], 1)

    while (r < gems.length) {
        if (hit.size === cnt) {
            if(ans[1] - ans[0] > r - l)
                ans = [l + 1, r + 1]

            hit.set(gems[l], hit.get(gems[l]) - 1);
            if (hit.get(gems[l]) === 0) 
                hit.delete(gems[l])

            l++;
        }
        else {
            r++;
            const right = hit.get(gems[r]);
            hit.set(gems[r], right ? right + 1 : 1);
        }
    }
    return ans;
}

🧵 참고한 정답지 🧵

https://velog.io/@bepyan/JS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B3%B4%EC%84%9D-%EC%87%BC%ED%95%91
https://gwang920.github.io/algorithm/progreammers-2-67258/

💡💡 기억해야 할 점 💡💡

  1. Map()
  2. 투 포인터
profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보