[프로그래머스][1차] 캐시
2020. 4. 13. 13:02ㆍ프로그래머스/카카오
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;
}
cities = cityInit(cities);
for(int i=0; i<cities.length; i++){
if(cache.contains(cities[i])){
answer ++;
cache = cacheChangeIndex(cities[i],cache);
}else{
answer +=5;
cache = cacheUpdate(cache,cacheSize,cities[i]);
}
}
return answer;
}
private String[] cityInit(String[] cities){
for(int i=0; i<cities.length; i++){
cities[i] = cities[i].toUpperCase();
}
return cities;
}
private List<String> cacheChangeIndex(String city,List<String> cache){
for(int i=0; i<cache.size(); i++){
if(cache.get(i).equals(city)){
cache.remove(i);
cache.add(city);
}
}
return cache;
}
private List<String> cacheUpdate(List<String> cache,int cacheSize,String city){
if(cache.size()<cacheSize){
cache.add(city);
}else{
cache.add(city);
cache.remove(0);
}
return cache;
}
}
1. 캐시사이즈가 0 이면 모두 cache miss이므로 (개수 * 5)로 바로 리턴해줌.
2. 대소문자 상관없어야 하기때문에 모두 대문자로 바꾸어 초기화 시켜줌.
3. 캐쉬에 해당 도시가 있을경우 가장 최근에 조회한 것으로 간주하여 인덱스를 맨 뒤로 바꾸어줌.
4. 캐쉬에 해당 도시가 없을경우 캐쉬사이즈를 고려하여 넣어줌.
'프로그래머스 > 카카오' 카테고리의 다른 글
[프로그래머스] [Level 4]무지의 먹방 라이브 (0) | 2020.04.14 |
---|---|
[프로그래머스][3차] 방금그곡 (0) | 2020.04.14 |
[프로그래머스] 튜플 (0) | 2020.04.12 |
[프로그래머스][3차]파일명 정렬 (0) | 2020.04.09 |
[프로그래머스][3차][압축] (0) | 2020.04.09 |