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

일단 해볼게·2024년 2월 11일
0

프로그래머스

목록 보기
98/106

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

from collections import deque

def solution(cacheSize, cities):
    total_time = 0
    q = deque()
    
    if cacheSize == 0: # 캐시사이즈 0인 경우
        return len(cities) * 5
    
    for i in cities:
        i = i.upper() # 대소문자 구분을 하지 않기 위해 모두 대문자로 변경
        
        if i in q: # q에 있는 경우
            q.remove(i)
            q.appendleft(i)
            total_time += 1
            
        elif i not in q: # q에 없는 경우
            q.appendleft(i)
            total_time += 5
                
            if cacheSize < len(q): # 캐시크기보다 q의 길이가 클 경우 제거
                q.pop()
            
    return total_time

LRU 알고리즘 참고 : https://dailylifeofdeveloper.tistory.com/355

다른 사람 코드

def solution(cacheSize, cities):
    import collections
    cache = collections.deque(maxlen=cacheSize)
    time = 0
    for i in cities:
        s = i.lower()
        if s in cache:
            cache.remove(s)
            cache.append(s)
            time += 1
        else:
            cache.append(s)
            time += 5
    return time

deque를 선언할 때 maxlen을 설정해 캐시크기와 q의 길이에 대한 코드를 줄였다.

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글