Lv.2 : [1차] 캐시 [JavaScript]

2024. 11. 2. 14:49Algorithm/프로그래머스

반응형

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 풀이

function solution(cacheSize, cities) {
    var answer = 0;
    var cacheArr = [];
        
    if(cacheSize === 0){
        return cities.length * 5;
    }
    
    for(var i = 0; i < cities.length; i++){
        var city = cities[i].toUpperCase();
        var idx = cacheArr.indexOf(city);
        
        if(idx != -1){
            cacheArr.splice(idx, 1)
            answer += 1;
        } else{
            if(cacheArr.length >= cacheSize) cacheArr.shift();
                answer += 5;
        }
        cacheArr.push(city);
    }
    
    return answer;
}

캐시를 저장할 cacheArr 배열을 만든다.

캐시 사이즈가 0이면 모든 city에 대해 실행시간이 5이므로 cities.length * 5를 리턴.

 

대소문자 구분이 없으므로, 대문자로 변환한 city와 캐시배열에서 city의 idx를 찾는다.

캐시배열에 city가 있다면 => 캐시배열에서 해당 city를 지우고 실행시간에 1 추가

캐시배열에 city가 없다면 => 캐시배열의 길이가 캐시 사이즈보다 크면 새로운 city를 캐시에 추가하기 위해 제일 앞 원소를 지우고 실행시간에 5 추가

그리고 캐시에 city를 추가해 준다.

 

반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

Lv.2 : 의상 [JavaScript]  (0) 2024.11.06
Lv.2 : 프로세스 [JavaScript]  (0) 2024.11.03
Lv.2 : 괄호 회전하기 [JavaScript]  (0) 2024.10.28
Lv.1 : 추억 점수 [JavaScript]  (1) 2024.10.26
Lv.2 : 귤 고르기 [JavaScript]  (0) 2024.10.26