알고리즘문제

프로그래머스 > [1차]캐시(JS)

단점이없어지고싶은개발자 2022. 11. 13. 22:26
반응형

 

1. 이 문제는 이해가 안되서 다른 사람이 푼 풀이를 바탕으로 이해하면서 다시 풀었다.

2. 핵심은 큐와 스택으로 문제를 풀었어야 했다.

function solution(cacheSize, cities) {
    let count = 0 ;
    let cityArray = [];
    
    cities.forEach((el) => {
        let currentCity = el.toLowerCase(); // 소문자로 통일
        let isFindCity = cityArray.find((city) => city === currentCity);
        //새로운 배열인 cityArray에 해당 city가 있는지 판단
        if (!isFindCity) {
            cityArray.push(currentCity);
            if (cityArray.length > cacheSize) {
            	//cacheSize보다 city를 담아둔 배열이 크다면 앞에서부터 빼주었다.
                //LRU알고리즘, 맨 앞에 있는 것이 가장 오래된 것이기에 앞에서부터 빼주었다.
                cityArray.shift();
            }
            count += 5;
            //miss이기에 + 5
        } else {
            cityArray = cityArray.filter((city) => city !== currentCity);
            //같은게 있다면 같은 걸 빼버리고, 새로운 걸 스택으로 쌓는다.
            cityArray.push(currentCity);
            count += 1;
            //hit이기에 + 1
        }
    });
    
    return count;
}

 


https://dailylifeofdeveloper.tistory.com/355

 

LRU 알고리즘 (Least Recentely Used) 개념 및 구현방법

안녕하세요! daily_D 입니다! 👩🏻‍💻 오늘은 페이지 교체 알고리즘 중에서 LRU에 대해서 공부해볼까요?! LRU 란? LRU(Least Recently Used)는 가장 오랫동안 참조되지 않은 페이지를 교체하는 방식입니

dailylifeofdeveloper.tistory.com

https://velog.io/@tnehd1998/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-1%EC%B0%A8-%EC%BA%90%EC%8B%9C-JavaScript

반응형