문제링크 🚩
https://school.programmers.co.kr/learn/courses/30/lessons/17680
📕 문제 접근 📕
- LRU : 가장 오래 참고 안한 값을 지우는 로직
- LinkedList로 밀면서 캐시 사이즈를 유지하는 방법을 채택하였다.
📖 배운점 📖
- 0일때 처리를 해주지 않으면 오답 처리가 나는 것 같다.
- remove() 단순 remove(int index)만 제공하는 줄 알았다. 리스트에 해당 인덱스의 값을 를 넣으면 그 인덱스번째의 값이 지워지는 것 뿐 아니라 remove(Object object) 파라미터에 Class형태의 값 자체를 넘기면 해당 값을 지워버리고 boolean을 반환한다.
- 해당 값이 없다면 false, 있다면 지우고 true를 반환
💻 Code 💻
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
if(cacheSize == 0)
return cities.length*5;
int answer = 0;
LinkedList<String> cache = new LinkedList<>();
for(int i = 0; i < cities.length; i++){
String s = cities[i].toUpperCase();
// 요소 삭제 가능
if(cache.remove(s)){
answer += 1;
cache.add(s);
}else{
answer += 5;
if(cache.size() >= cacheSize){
cache.remove(0);
}
cache.add(s);
}
}
return answer;
}
}
'JAVA > Algo 풀이' 카테고리의 다른 글
[프로그래머스] 2022 KAKAO BLIND RECRUITMENTk진수에서 소수 개수 구하기 - Java (0) | 2023.11.13 |
---|---|
[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 튜플 , Java (1) | 2023.11.11 |
[프로그래머스] 키패드 누르기 - 2020 카카오 인턴쉽, 자바 (0) | 2023.11.09 |
[프로그래머스] 두 큐 합 같게 만들기 - 2022 KAKAO TECH INTERNSHIP (0) | 2023.11.07 |
[백준] BOJ 1931 회의실 배정 (0) | 2023.09.24 |