베리영young 2025. 3. 2. 23:13

사용 알고리즘: 자료구조-큐

사용 언어: java

 

import java.util.*;

class Solution {
    Queue<String> cache = new ArrayDeque<>();
    
    public int solution(int cacheSize, String[] cities) {
        if(cacheSize == 0) {
            return 5 * cities.length;
        }
        
        int answer = 0;
        for(String city : cities) {
            city = city.toUpperCase();
            if(cache.size() == 0) {
                cache.add(city);
                answer += 5;
            }
            else {
                if(cache.contains(city)) {
                    cache.remove(city);
                    cache.add(city);
                    answer += 1;
                }
                else {
                    if(cache.size() == cacheSize) {
                        cache.poll();
                    cache.add(city);
                    answer += 5;
                    }
                    else {
                        cache.add(city);
                    answer += 5;
                    }
                }
            }
        }
        
        System.out.println(cache);
        
        return answer;
    }
}

 

 

처음엔 queue.poll()을 사용해서 비교했음...

그렇게 하면 중간에 city와 같은 값이 나와도 찾을 수 없는데 왜 그렇게 논리를 짰는지 알 수 없음...

 

쉬운 문제라고 생각해서 너무 방심한 거 같다.