프로그래머스 캐시 Java - 2018 카카오 블라인드 채용

문제

문자열로 구성된 도시 리스트를 캐시 사이즈와 LRU캐시를 기반으로 적용했을 때 총 실행시간을 구하라

도시는 소문자/대문자가 섞여있고 공백/특수문자는 없다. LRU 캐시는 가장 최근에 교체되지 않는 값을 바꾸는 기법중 하나로 가장 오랜 기간 사용하지 않은 것을 제거하면 된다.

접근

풀이

1번

int answer = 0;

ArrayList<String> list = new ArrayList<>();

for(String city : cities) {
    String temp = city.toLowerCase();

    if(list.contains(temp)) { //hit
        answer += 1;

        int idx = list.indexOf(temp);
        list.remove(idx);
        list.add(temp);
    } else { //miss
        answer += 5;
        if(cacheSize > 0) {
            if(list.size() >= cacheSize)
                list.remove(0);
            list.add(temp);                    
        }
    }
}

return answer;

LRU 캐시 기법에 대한 이해만 있다면 크게 어렵지 않다. 또한, 문자열을 모두 소문자로 바꿔주는 센스가 필요하다.

결론



Related Posts