[1차] 캐시

문제


문제 해설

문제를 해설을 얼마나 이해했냐에 따라 난이도가 나뉘는 문제이다.

기존 캐시에 존재하는 값일 경우 + 1 아닌 경우 + 5 이다. 그리고 캐시 맥스 사이즈보다 커지면 제일 처음에 있는 캐시값은 삭제그리고 새로 추가한다. 

 

또한 중복값이 나왔을 때 기존 캐시를 삭제하고 새로 추가해야하는 문제이다. <-- 해당 부분은 테스트 케이스도 없어서 질문을 보고 알았음. 

 

그리고 대소문자를 구분하지 않기 때문에 들어오는 값에 대해서 소문자처리나 대문자처리를 하여야 한다. 


나의 답안

public static int solution(int cacheSize, String[] cities) {
    int answer = 0;
    Deque<String> cache = new LinkedList<>();
    if (cacheSize == 0) return cities.length * 5;
    for (String str : cities) {
        str = str.toLowerCase();
        if (cache.isEmpty()) {
            cache.offer(str);
            answer += 5;
            continue;
        }
        if (cache.contains(str)) {
            cache.remove(str);
            answer += 1;
        } else {
            answer += 5;
        }
        cache.offer(str);
        if (cache.size() > cacheSize) cache.poll();
    }
    return answer;
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

튜플  (0) 2023.04.02
행렬의 곱셈  (0) 2023.04.02
귤 고르기  (0) 2023.04.01
괄호 회전하기  (0) 2023.04.01
멀리 뛰기  (0) 2023.03.31