문제
https://school.programmers.co.kr/learn/courses/30/lessons/17680#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
캐시에 배열의 값이 있으면 캐시 히트이고 아니면 캐시 미스이다.
3가지에 대해서 생각해보면 된다.
1. 캐시에 배열의 값이 있는 경우
2. 캐시에 배열의 값이 없고 사이즈가 캐시 사이즈보다 작을경우
3. 캐시에 배열의 값이 없고 사이즈가 캐시 사이즈보다 크거나 같을경우
1번은 무조건 캐시 히트이고 2, 3번은 캐시 미스이다.\
캐시는 리스트로 구현했고 index가 작을수록 오래된것 클수록 최신것으로 구성했다.
캐시 미스일경우에는 값을 넣고 가장 오래된 캐시의 값을 뻬주면 된다.
캐시 히트일경우에는 캐시의 값을 빼고 다시 넣어준다.
코드
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
List<String> list = new ArrayList<>();
int answer = 0;
for(int i=0;i<cities.length;i++){
String city = cities[i].toUpperCase();
if(list.indexOf(city) >= 0){
answer += 1;
list.remove(list.indexOf(city));
list.add(city);
}
else if(cacheSize > list.size()){
answer += 5;
list.add(city);
}
else{
list.add(city);
list.remove(0);
answer += 5;
}
}
return answer;
}
}