728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17680
728x90
메모리: 108 MB, 시간: 65.03 ms
사용 알고리즘: 문자열, 자료구조
import java.util.*;
class Solution {
public int solution(int cacheSize, String[] cities) {
int answer = 0;
// 캐시 정보
Deque<String> cache = new ArrayDeque<>();
for(String city : cities) {
// 대소문자 구분 없음
city = city.toLowerCase();
if(cache.contains(city)) { // 캐시에 이미 정보가 있다면
answer += 1; // 실행시간은 + 1
cache.remove(city); // LRU에 따라 다시 맨 뒤로 보내줌
}
else { // 캐시에 정보가 없다면
answer += 5; // 실행시간은 + 5
if(cache.size() >= cacheSize) { // 캐시가 꽉 찼다면
cache.pollFirst(); // 가장 오래 전에 쓰인 데이터 삭제
}
}
if(cache.size() < cacheSize) cache.addLast(city);
}
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 12913] 땅따먹기 (java) (0) | 2025.01.07 |
---|---|
[프로그래머스, 12930] 이상한 문자 만들기 (java) (0) | 2025.01.07 |
[프로그래머스, 147355] 크기가 작은 부분문자열 (java) (0) | 2025.01.07 |
[프로그래머스, 140108] 문자열 나누기 (java) (0) | 2025.01.03 |
[프로그래머스, 181847] 0 떼기 (java) (0) | 2025.01.03 |