[ 프로그래머스 ] #17680 : [1차] 캐시 - JAVA

🔗 [1차] 캐시

import java.util.*;
class Solution {
    static int hit=1;
    static int miss=5;

    public int solution(int cacheSize, String[] cities) {
        // LRU : 최근에 사용하지 않은 것을 교체한다.

        if(cacheSize==0)return miss*cities.length;

        // 초기 설정 
        List<String> list=new ArrayList<>();
        int answer=0;

        for(int i=0;i<cities.length;i++){
            String city=cities[i].toLowerCase();

            if(list.contains(city)){// 캐시에 있다면
                list.remove(city);// 사용한 것을 맨 뒤에 추가 하기 위해
                list.add(city);// 가장 최근에 사용한 것은 맨 뒤로
                answer+=hit;
            }else if(list.size()<cacheSize){// 캐시에 없고 캐시 공간이 있는 경우
                list.add(city);// 캐시 맨 뒤에 추가
                answer+=miss;
            }else{// 캐시에 없고 캐시 공간이 없는 경우
                list.remove(0);// 최근에 사용하지 않은 것은 맨 앞에 있으므로 삭제
                list.add(city);// 캐시 맨 뒤에 추가
                answer+=miss;
            }
        }
        return answer;
    }
}