본문 바로가기
알고리즘-python/Programmers 문제

[프로그래머스/2단계/파이썬(Python3)] 캐시

by 빅데이터1020 2021. 7. 13.
SMALL

 

문제 출처

 

코딩테스트 연습 - [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

 

 

풀이 코드

캐시 알고리즘은 최근 사용하거나 자주 사용하는 데이터 항목을 빠른 계산이 가능한 메모리 위치에 유지시키는 구조입니다.

최근 사용한 데이터를 캐시 리스트에 넣고,

캐시 리스트가 다 차면 가장 덜 사용한 데이터부터 제거한 뒤 최근 사용한 데이터를 캐시 리스트에 넣어주면 됩니다.

 

def solution(cacheSize, cities):
    cities = list(map(lambda x: x.lower(), cities))
    cache = []
    answer = 0
    
    if cacheSize == 0:
        return len(cities) * 5
    
    else:
        for city in cities:
            if city in cache:
                cache.remove(city)
                cache.append(city) # 최근에 사용할수록 리스트 마지막에 더해짐
                answer += 1
            else:
                if len(cache) >= cacheSize:
                    cache.pop(0)  # 가장 덜 사용될수록 리스트 첫번째에 오게 됨
                cache.append(city)
                answer += 5
            
    return answer

 

문제풀이 팁

list(map(lambda())) 로 작성한 부분을 [x.lower() for x in cities] 로도 쓸 수 있다
cache.remove(item)을 cache.pop(cache.index(item)) 으로 바꿀 수 있다

 

 

 

캐시 알고리즘 개념 확인하러 가기↓↓↓↓↓↓

 

[알고리즘/파이썬(Python3)] 캐시 알고리즘 중 LRU 알고리즘

캐시 알고리즘은 최근 사용하거나 자주 사용하는 데이터 항목을 빠른 계산이 가능한 메모리 위치에 유지시키는 구조입니다. 정보를 제공하는 속도를 높이기 위해 새로운 데이터가 발생했을 때

data-analysis-expertise.tistory.com

 

LIST