[프로그래머스, 17680] [1차] 캐시 (java)
Problem Solving/Programmers

[프로그래머스, 17680] [1차] 캐시 (java)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/17680

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

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