문제
문제 해설
문제를 해설을 얼마나 이해했냐에 따라 난이도가 나뉘는 문제이다.
기존 캐시에 존재하는 값일 경우 + 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;
}