728x90
SMALL
문제 이해
- LRU(Least Recently Used) 알고리즘으로 캐시에 데이터를 할당할때 캐시가 꽉차면 최근에 사용안한 캐시를 지우는 알고리즘이다.
- 도시의 이름은 대소문자 가리지 않는다. toUpperCase() 사용
- 캐시를 List 객체를 사용하여 캐시에 같은 도시명이 존재하면 해당 리스트 index 삭제후 맨뒤에 도시 추가 실행시간 +1
- 리스트에 존재하지 않으면 실행시간 +5
- 캐시에 데이터가 존재하는지 확인하는 함수 생성 exitsCache();
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 str : cities){
String s = str.toUpperCase();
int index = exitsCache(s, cache);
if(index > -1){
cache.remove(index);
cache.add(s);
answer++;
continue;
}else{
answer += 5;
}
if(cache.size()>=cacheSize){
cache.add(s);
cache.remove(0);
continue;
}
cache.add(s);
}
return answer;
}
public static int exitsCache(String str, List<String> cache){
for(int i = 0; i<cache.size(); i++){
if(cache.get(i) != null){
if(cache.get(i).equals(str)){
return i;
}
}
}
return -1;
}
}
728x90
LIST
'자바 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 피로도 - Java(자바) (0) | 2024.03.28 |
---|---|
[프로그래머스] 튜플 - Java(자바) (0) | 2024.03.27 |
[프로그래머스] 기능개발 - Java(자바) (1) | 2024.03.26 |
[프로그래머스] 할인 행사 - Java(자바) (0) | 2024.03.26 |
[프로그래머스] 괄호 회전하기 - Java(자바) (0) | 2024.03.26 |