알고리즘/programmers
[Programmers] [1차] 캐시
akjfal
2021. 6. 19. 14:40
// 0 <= cacheSize <= 30
// city <= 100,000 -> only Eng and need make lowercase
// city.length <= 20
// LRU사용
// hit = 1
// miss = 5
// linkedList를 통해 캐시 구현
import java.util.HashMap;
import java.util.LinkedList;
class Solution {
public int solution(int cacheSize, String[] cities) {
int answer = 0;
LinkedList<String> cache = new LinkedList<>();
for(int i = 0; i < cities.length; i++){
String key = cities[i].toLowerCase();
int num = checkCache(cache, key);
cache.addLast(key);
if(num > -1){
cache.remove(num);
answer+=1;
}else{
if(cache.size() <= cacheSize){
answer += 5;
}else{
cache.poll();
answer+= 5;
}
}
}
return answer;
}
public int checkCache(LinkedList<String> list, String check){
int idx = 0;
for(String s : list){
if(check.equals(s))
return idx;
idx++;
}
return -1;
}
}