풀이
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
int answer = 0;
List<String> cache = new ArrayList<>();
if (cacheSize == 0) {
return cities.length * 5;
}
for (String city : cities) {
city = city.toLowerCase();
int index = cache.indexOf(city);
if (index != -1) {
cache.remove(index);
cache.add(city);
answer += 1;
} else {
if (cache.size() >= cacheSize) {
cache.remove(0);
}
cache.add(city);
answer += 5;
}
}
return answer;
}
}
- 이 문제에서 핵심 아이디어는 새롭게 선언한 리스트 cache 이다
- 캐싱되는 사이즈만큼 갱신해가면서 없앤다. 이 때 큐를 사용해도 자연스러울 듯
- 어렵고 재밌는 문제였다...