본문 바로가기
알고리즘/카카오 기출문제

[파이썬🐍] 프로그래머스 : [1차] 캐시

by 코딩개미뚠뚠 2021. 5. 26.
반응형

 

from collections import deque 
def solution(cacheSize, cities):
    answer = 0
    buffer = deque()
    if cacheSize == 0: 
        return len(cities) * 5
    else: 
        for i in cities: 
            i = i.lower()                      #대소문자 구분 X
            if i in buffer: answer += 1 
            else: answer += 5 

            if i in buffer:                    #이미 존재한다면
                buffer.remove(i)               #제거
            else:
                if len(buffer) >= cacheSize:   #꽉 찼다면
                    buffer.popleft()           #가장 오랫동안 사용되지 않은 튜플 제거

            buffer.append(i)                   #가장 최근으로 추가
    return answer

이 문제는 LRU의 개념만 잘 알고 있었다면 푸는데 큰 어려움이 없을 것이다.

정보처리기사 실기 준비만 여러번하면서 LRU는 정확하게 알고 있다.😂

 

기본적인 개념은 오랫동안 사용되지 않은 페이지를 교체해 주는 것이다.

여기서 캐시크기는 예를 들면 용량이라고 생각하면 될 것이다.

캐시가 3이면 최대 3개의 도시를 기억할 수 있는 것이다. 3개가 꽉찼는데 하나가 들어오려고 한다면

 

1. 저장되어있는 도시인가? 참조후 최근 참조로 변경

2. 아니라면? 제일 먼저 들어와있던 도시를 제거하고 추가

 

알고있는 개념을 이렇게 이용하니까 문제를 푸는데 좀 재밌었다.¯\_(ツ)_/¯

반응형

댓글