inblog logo
|
stupefyee
    알고리즘문제풀기

    [JAVA 문제 풀이] 312. 캐시

    프로그래머스 (17680)
    Stupefyee's avatar
    Stupefyee
    Jun 11, 2025
    [JAVA 문제 풀이] 312. 캐시
    Contents
    내가 작성한 코드다른 사람의 코드
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/17680
    notion image
     

    내가 작성한 코드

    import java.util.*; class Solution { public int solution(int cacheSize, String[] cities) { Stack<String> cache = new Stack<>(); int answer = 0; if (cacheSize == 0) { return cities.length * 5; // 캐시 사이즈가 0이면 모든 요청이 캐시 미스 } for (String city : cities) { String cityLower = city.toLowerCase(); // 대소문자 구분 없이 처리 // 캐시 히트 if (cache.contains(cityLower)) { answer += 1; cache.remove(cityLower); // 기존 위치에서 제거 cache.push(cityLower); // 가장 최근에 사용한 것으로 업데이트 } else { // 캐시 미스 answer += 5; cache.push(cityLower); // 캐시에 추가 if (cache.size() > cacheSize) { // 캐시가 가득 찼으면 cache.remove(0); // 가장 오래된 항목 제거 } } } return answer; } }
     

    다른 사람의 코드

    import java.util.*; class Solution { public int solution(int cacheSize, String[] cities) { LinkedList<String> cache = new LinkedList<>(); // LRU 캐시 역할을 하는 리스트 int answer = 0; if (cacheSize == 0) { return cities.length * 5; // 캐시 크기가 0이면 모두 미스 } for (String city : cities) { String cityLower = city.toLowerCase(); // 대소문자 구분 없이 처리 if (cache.remove(cityLower)) { // 이미 캐시에 있으면(히트) answer += 1; } else { // 캐시에 없으면(미스) answer += 5; if (cache.size() == cacheSize) { // 캐시가 가득 찼으면 cache.removeFirst(); // 가장 오래된 도시 제거 } } cache.add(cityLower); // 항상 가장 최근에 사용한 도시를 뒤에 추가 } return answer; } }
    • Stack대신 LinkedList를 사용하여 LRU(Least Recently Used) 에 더 적합한 형태로 변환
    Share article
    Contents
    내가 작성한 코드다른 사람의 코드

    stupefyee

    RSS·Powered by Inblog