➰ 취업준비/알고리즘 문제풀이

[Python][프로그래머스] level 2 - 캐시

 사과개발자 2021. 12. 18. 19:32

문제

 

코딩테스트 연습 - [1차] 캐시

3 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Jeju", "Pangyo", "Seoul", "NewYork", "LA"] 50 3 ["Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul", "Jeju", "Pangyo", "Seoul"] 21 2 ["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "SanFrancisco", "Seoul", "Ro

programmers.co.kr

 

 

풀이과정

 

LRU 알고리즘 (Least Recentely Used) 개념 및 구현방법

안녕하세요! daily_D 입니다! 👩🏻‍💻 오늘은 페이지 교체 알고리즘 중에서 LRU에 대해서 공부해볼까요?! LRU 란? 일단, LRU(Least Recently Used)는 가장 오랫동안 참조되지 않은 페이지를 교체하는 방

dailylifeofdeveloper.tistory.com

1. city 이름은 대소문자를 구분하지 않기때문에 전부 city.lower() 로 통일시켜준다
2. city 가 캐시에 있으면, 기존에 있던것을 제거하고 맨 뒤에 추가한다 (가장 최근에 참조되었다는것을 나타내기위해)
2-1.                        없으면, 캐시에 추가하고 cacheSize 를 벗어나게 되면 가장 오래된 0번째 원소를 제거한다.

 

Code

def solution(cacheSize, cities):
    cache = []
    answer = 0
    
    for city in cities:
    	# 1
        city = city.lower()
        # 2-1
        if city in cache:
            cache.remove(city)
            cache.append(city)
            answer += 1
        # 2-2
        else:
            cache.append(city)
            if len(cache) > cacheSize:
                cache.pop(0)
            answer += 5
    return answer

 

반응형