프로그래머스 #JavaScript - 캐시

SSO·2020년 2월 19일
0

프로그래머스 Lv2

목록 보기
40/46

문제

https://programmers.co.kr/learn/courses/30/lessons/17680

풀이

function solution(cacheSize, cities) {
    var answer = 0;
    var hitCount = 0;
    var cacheArr = [];
    // 고려해야 하는 사항
    //[] , hit의 개수
    
    if(cacheSize === 0){
       return answer =  cities.length*5;
    } // 예외처리 안하면 7, 17 test 실패!
    
    for(var i =0; i<cities.length; i++){
         //같은게 있으면 hitCount++하고 push하지 않기
        cities[i] = cities[i].toUpperCase();
        var targetIndex = cacheArr.indexOf(cities[i]);
        if(targetIndex==-1){ //같은게 없으면 앞에서 제거
            if(cacheArr.length === cacheSize){  //꽉찬 경우 앞에서 제거
                cacheArr.shift();
            }
        }else{ //같은게 있으면 같은 걸 제거
            hitCount++;
            cacheArr.splice(targetIndex, 1);
        }
        cacheArr.push(cities[i]);  // 새로운 것 맨 뒤에 넣기     
    }
    answer = (cities.length-hitCount)*5 + hitCount;
    return answer;
}

더 생각해보기

arr.indexOf();

참고사항

profile
happy

0개의 댓글