728x90
반응형
SMALL
https://school.programmers.co.kr/learn/courses/30/lessons/17680
ArrayList 를 사용했을때
class Solution {
private static List<String> cache = new ArrayList<>();
public static int solution(int cacheSize, String[] cities) {
int answer = 0;
if (cacheSize == 0){
return cities.length * 5;
}
for (String city : cities){
String elem = city.toLowerCase();
if (cache.contains(elem)){
answer++;
cache.remove(elem);
cache.add(elem);
} else {
answer+=5;
if (cache.size() == cacheSize){
cache.remove(0);
}
cache.add(elem);
}
}
return answer;
}
}
LinkedHashMap을 사용했을때
class Solution {
public static int solution(int cacheSize, String[] cities) {
cache = new LinkedHashMap<>(cacheSize, 0.75f, true){
@Override
protected boolean removeEldestEntry(Map.Entry eldest) {
return size() > cacheSize;
}
};
int answer = 0;
for (String city : cities){
String elem = city.toLowerCase();
if (cache.containsKey(elem)){
answer+=1;
} else {
answer+=5;
}
cache.put(elem, 0);
}
return answer;
}
}
무조건 `LinkedHashMap` 3번째 인자에 true 값을 해줘야 한다.
그래야 접근 순서에 맞게 우선순위 정렬을 해준다.(최신 추가된 값이 우선순위가 가장 높게 세팅된다.)
false로 하면 최신 추가 값에 대한 우선순위 갱신이 안된다.
728x90
반응형
LIST
'나의 주니어 개발 일기 > 알고리즘' 카테고리의 다른 글
빅오 표기법이란? (0) | 2024.05.14 |
---|