akjfal

[Programmers] [1차] 캐시 본문

알고리즘/programmers

[Programmers] [1차] 캐시

akjfal 2021. 6. 19. 14:40
// 0 <= cacheSize <= 30
// city <= 100,000 -> only Eng and need make lowercase 
// city.length <= 20
// LRU사용
// hit = 1
// miss = 5

// linkedList를 통해 캐시 구현

import java.util.HashMap;
import java.util.LinkedList;

class Solution {
    public int solution(int cacheSize, String[] cities) {
        int answer = 0;
        LinkedList<String> cache = new LinkedList<>();
        for(int i = 0; i < cities.length; i++){
            String key = cities[i].toLowerCase();
            int num = checkCache(cache, key);
            cache.addLast(key);
            if(num > -1){
                cache.remove(num);
                answer+=1;
            }else{
                if(cache.size() <= cacheSize){
                    answer += 5;
                }else{
                    cache.poll();
                    answer+= 5;
                }
            }
        }
        return answer;
    }
    
    public int checkCache(LinkedList<String> list, String check){
        int idx = 0;
        for(String s : list){
            if(check.equals(s))
                return idx; 
            idx++;
        }
        return -1;
    }
}

 

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

[Programmers] 방문 길이  (0) 2021.06.22
[Programmers] 점프와 순간 이동  (0) 2021.06.20
[Programmers] 이진 변환 반복하기  (0) 2021.06.19
[Programmers] 피보나치 수  (0) 2021.06.19
[Programmers] 최댓값과 최솟값  (0) 2021.06.19
Comments