Cache Size만큼 돌면서 HashMap에 채워 나간다. Hit라면 +5 하한다. Cache 가 가득 차면 하나를 줄인다.

import java.util.*;
class Solution {
    public int solution(int cacheSize, String[] cities) {
        int answer = 0;
        LinkedHashMap<String,Boolean> hm = new LinkedHashMap<>();
        
        if(cacheSize == 0){
            return cities.length*5;
        }
        
    
        
        int cnt = 1;
        for(int i=0; i<cities.length; i++){
            cities[i]=cities[i].toLowerCase(); 
            
            if(hm.containsKey(cities[i])){
                for(String key : hm.keySet()){
                    if(cities[i].equals(key)){
                        hm.remove(key);
                        break;
						
                        //발생이슈 : 
						//LRU 알고리즘 : 가장 오래된 페이지를 죽이고 새로 띄운다.
						//이미 캐싱된 페이지도 마찬가지로 죽이고 새로 띄운다. 
						//?? 잘못생각한 것, cnt 개수를 캐시사이즈 만큼 쓴것
										
						//<Template, Template> 
                    }
                }
                
                answer+=1;
                //System.out.println(cities[i]);
            }
            else
            {
                if(cacheSize ==hm.size())
                {
                    for(String key : hm.keySet()){ 
                        
                        hm.remove(key);
                        break;
                    }
                }
                answer+=5;
            }
        
            hm.put(cities[i],true);
            
            // for(String key : hm.keySet())
            //     System.out.print(key+" ");
            // System.out.println();
        }
        //System.out.println(answer);
        return answer;
    }
}

'알고리즘' 카테고리의 다른 글

kakao_튜플  (0) 2021.12.06
kakao_n진수 게임  (0) 2021.12.05
백준_새로운게임2  (0) 2021.08.13
프로그래머스_디스크컨트롤러  (0) 2021.08.13
프로그래머스_실패율  (0) 2021.08.13