🔗 [1차] 캐시
import java.util.*;
class Solution {
static int hit=1;
static int miss=5;
public int solution(int cacheSize, String[] cities) {
// LRU : 최근에 사용하지 않은 것을 교체한다.
if(cacheSize==0)return miss*cities.length;
// 초기 설정
List<String> list=new ArrayList<>();
int answer=0;
for(int i=0;i<cities.length;i++){
String city=cities[i].toLowerCase();
if(list.contains(city)){// 캐시에 있다면
list.remove(city);// 사용한 것을 맨 뒤에 추가 하기 위해
list.add(city);// 가장 최근에 사용한 것은 맨 뒤로
answer+=hit;
}else if(list.size()<cacheSize){// 캐시에 없고 캐시 공간이 있는 경우
list.add(city);// 캐시 맨 뒤에 추가
answer+=miss;
}else{// 캐시에 없고 캐시 공간이 없는 경우
list.remove(0);// 최근에 사용하지 않은 것은 맨 앞에 있으므로 삭제
list.add(city);// 캐시 맨 뒤에 추가
answer+=miss;
}
}
return answer;
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[ 프로그래머스 ] #17684 : [3차] 압축 - JAVA (0) | 2025.02.05 |
---|---|
[ 프로그래머스 ] #17683 : [3차] 방금그곡 - JAVA (0) | 2025.01.25 |
[ 프로그래머스 ] #17679 : [1차] 프렌즈4블록 - JAVA (0) | 2025.01.21 |
[ 프로그래머스 ] #42889 : 실패율 - JAVA (0) | 2025.01.16 |
[ 프로그래머스 ] #17677 : [1차] 뉴스 클러스터링 - JAVA (0) | 2025.01.12 |