파이썬 알고리즘-119 (프로그래머스) 캐시

jiffydev·2021년 3월 8일
0

Algorithm

목록 보기
126/134

코드

def solution(cacheSize, cities):
    answer = 0
    res={}
    if cacheSize==0:
        return len(cities)*5

    for c in cities:
        c=c.lower()
        
        if len(res)<cacheSize:
            res[c]=0
            answer+=5
        elif len(res)==cacheSize and c in res.keys():
            res[c]+=1
            answer+=1
        else:
            for k,v in res.items():
                if v==min(res.values()):
                    break
            del res[k]
            res[c]=0
            answer+=5

    return answer
# 틀린 방법
# 리스트로도 충분히 구현 가능했을텐데 생각이 부족했음

다른 사람의 풀이

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)

deque 모듈은 초기화할 때 크기를 정해주지 않으면 기본적으로 무작위의 크기로 생성된다. 크기를 정해서 초기화한 후 크기를 넘어가게 된다면, append()로 추가했을 경우 왼쪽의 원소가 삭제되고, 반대로 appendleft()로 추가하면 오른쪽의 원소가 삭제된다.

profile
잘 & 열심히 살고싶은 개발자

0개의 댓글