최대 1 분 소요

문제 링크

내 풀이

def solution(cacheSize, cities):
    cache = []
    time = 0
    for city in cities:
        if city.lower() in cache:
            time += 1
            cache.pop(cache.index(city.lower()))
            cache.append(city.lower())
        else:
            time += 5
            if len(cache) == cacheSize and cacheSize > 0:
                cache.pop(0)
                cache.append(city.lower())
            elif cacheSize > 0:
                cache.append(city.lower())
            else:
                continue
    return time               

다른 풀이

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

풀이 해석

  • cache를 deque함수의 maxlen 기능을 이용해 불필요한 코드를 최소화하였다
  • remove를 통해 cache hit를 해결하였다

배울 점

  • deque함수의 maxlen기능
  • remove를 통해 해당 원소 바로 삭제

댓글남기기